diff --git a/FoodScan.xcodeproj/project.pbxproj b/FoodScan.xcodeproj/project.pbxproj index 4ddc9af..dbf5136 100644 --- a/FoodScan.xcodeproj/project.pbxproj +++ b/FoodScan.xcodeproj/project.pbxproj @@ -709,7 +709,7 @@ 000A852322115C640097B022 /* Embed Frameworks */, CA4BE67B6D1DCA73F2776419 /* [CP] Embed Pods Frameworks */, 5B318DBA2286887F008CB362 /* ShellScript */, - A165839650F6B60AC7621F83 /* [CP] Copy Pods Resources */, + 8FB03674B2FEDA926FD4AA61 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -893,7 +893,7 @@ shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/FirebaseCrashlytics/run\"\n"; }; - A165839650F6B60AC7621F83 /* [CP] Copy Pods Resources */ = { + 8FB03674B2FEDA926FD4AA61 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1227,7 +1227,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = S2A23S7R4S; ENABLE_BITCODE = NO; @@ -1282,7 +1282,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = S2A23S7R4S; ENABLE_BITCODE = NO; diff --git a/FoodScan/Controller/HomeTabVC/ScanProductVC.swift b/FoodScan/Controller/HomeTabVC/ScanProductVC.swift index 44b7739..0a56128 100755 --- a/FoodScan/Controller/HomeTabVC/ScanProductVC.swift +++ b/FoodScan/Controller/HomeTabVC/ScanProductVC.swift @@ -64,6 +64,7 @@ class ScanProductVC: UIViewController{ override func viewDidLoad() { super.viewDidLoad() self.setUpCamera() + } override func viewWillAppear(_ animated: Bool) { @@ -371,13 +372,14 @@ extension ScanProductVC: AVCaptureMetadataOutputObjectsDelegate{ return } // Get the metadata object. - self.session.stopRunning() +// self.session.stopRunning() if let metadataObject = metadataObjects.first { guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return } guard let stringValue = readableObject.stringValue else { return } AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate)) self.productCode = stringValue + self.session.stopRunning() checkLoginAlert() } } @@ -420,11 +422,15 @@ extension ScanProductVC self.videoCapture.start() } } - }) } else{ self.generateAlertWithOkButton(text: no_internet_connection) + if self.scanOptions == 1{ + self.session.startRunning() + }else{ + self.videoCapture.start() + } } } } diff --git a/Podfile b/Podfile index af3d1c2..de0f63c 100644 --- a/Podfile +++ b/Podfile @@ -20,7 +20,7 @@ target 'FoodScan' do pod 'Cosmos', '~> 20.0' # Text Recognization -# pod 'Firebase/Core' + pod 'Firebase/Core' pod 'Firebase/MLVision' pod 'Firebase/MLVisionTextModel' pod 'Firebase/Crashlytics' diff --git a/Podfile.lock b/Podfile.lock index e84a016..c80dfbf 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,73 +1,90 @@ PODS: - Alamofire (4.7.3) - Cosmos (20.0.1) - - Firebase/CoreOnly (6.18.0): - - FirebaseCore (= 6.6.3) - - Firebase/Crashlytics (6.18.0): + - Firebase/Core (6.27.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 4.0.0-beta.4) - - Firebase/MLVision (6.18.0): + - FirebaseAnalytics (= 6.6.1) + - Firebase/CoreOnly (6.27.0): + - FirebaseCore (= 6.8.0) + - Firebase/Crashlytics (6.27.0): - Firebase/CoreOnly - - FirebaseMLVision (~> 0.19.0) - - Firebase/MLVisionTextModel (6.18.0): + - FirebaseCrashlytics (~> 4.2.0) + - Firebase/MLVision (6.27.0): - Firebase/CoreOnly - - FirebaseMLVisionTextModel (~> 0.19.0) - - FirebaseAnalyticsInterop (1.5.0) - - FirebaseCore (6.6.3): - - FirebaseCoreDiagnostics (~> 1.2) - - FirebaseCoreDiagnosticsInterop (~> 1.2) + - FirebaseMLVision (~> 0.20.1) + - Firebase/MLVisionTextModel (6.27.0): + - Firebase/CoreOnly + - FirebaseMLVisionTextModel (~> 0.20.0) + - FirebaseAnalytics (6.6.1): + - FirebaseCore (~> 6.8) + - FirebaseInstallations (~> 1.4) + - GoogleAppMeasurement (= 6.6.1) + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (~> 1.30905.0) + - FirebaseCore (6.8.0): + - FirebaseCoreDiagnostics (~> 1.3) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/Logger (~> 6.5) - - FirebaseCoreDiagnostics (1.2.1): - - FirebaseCoreDiagnosticsInterop (~> 1.2) - - GoogleDataTransportCCTSupport (~> 1.3) + - FirebaseCoreDiagnostics (1.4.0): + - GoogleDataTransportCCTSupport (~> 3.1) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/Logger (~> 6.5) - - nanopb (~> 0.3.901) - - FirebaseCoreDiagnosticsInterop (1.2.0) - - FirebaseCrashlytics (4.0.0-beta.4): - - FirebaseAnalyticsInterop (~> 1.2) - - FirebaseCore (~> 6.6) - - FirebaseInstanceID (~> 4.3) + - nanopb (~> 1.30905.0) + - FirebaseCrashlytics (4.2.0): + - FirebaseCore (~> 6.8) + - FirebaseInstallations (~> 1.1) + - GoogleDataTransport (~> 6.1) + - GoogleDataTransportCCTSupport (~> 3.1) + - nanopb (~> 1.30905.0) - PromisesObjC (~> 1.2) - - FirebaseInstallations (1.1.0): - - FirebaseCore (~> 6.6) - - GoogleUtilities/UserDefaults (~> 6.5) + - FirebaseInstallations (1.4.0): + - FirebaseCore (~> 6.8) + - GoogleUtilities/Environment (~> 6.6) + - GoogleUtilities/UserDefaults (~> 6.6) - PromisesObjC (~> 1.2) - - FirebaseInstanceID (4.3.2): - - FirebaseCore (~> 6.6) + - FirebaseInstanceID (4.4.0): + - FirebaseCore (~> 6.8) - FirebaseInstallations (~> 1.0) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/UserDefaults (~> 6.5) - - FirebaseMLCommon (0.19.0): - - FirebaseCore (~> 6.3) - - FirebaseInstanceID (~> 4.2) + - FirebaseMLCommon (0.20.1): + - FirebaseCore (~> 6.7) + - FirebaseInstanceID (~> 4.3) - GoogleToolboxForMac/Logger (~> 2.1) - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" - GoogleUtilities/UserDefaults (~> 6.0) - GTMSessionFetcher/Core (~> 1.1) - - Protobuf (~> 3.5) - - FirebaseMLVision (0.19.0): - - FirebaseCore (~> 6.3) - - FirebaseMLCommon (~> 0.19) + - Protobuf (~> 3.12) + - FirebaseMLVision (0.20.1): + - FirebaseCore (~> 6.7) + - FirebaseMLCommon (~> 0.20) - GoogleAPIClientForREST/Core (~> 1.3) - GoogleAPIClientForREST/Vision (~> 1.3) - GoogleToolboxForMac/Logger (~> 2.1) - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" - GTMSessionFetcher/Core (~> 1.1) - - Protobuf (~> 3.5) - - FirebaseMLVisionTextModel (0.19.0): - - FirebaseMLVision (~> 0.19) - - GoogleAPIClientForREST/Core (1.3.11): + - Protobuf (~> 3.12) + - FirebaseMLVisionTextModel (0.20.0): + - FirebaseMLVision (~> 0.20) + - GoogleAPIClientForREST/Core (1.4.2): - GTMSessionFetcher (>= 1.1.7) - - GoogleAPIClientForREST/Vision (1.3.11): + - GoogleAPIClientForREST/Vision (1.4.2): - GoogleAPIClientForREST/Core - GTMSessionFetcher (>= 1.1.7) - - GoogleDataTransport (4.0.1) - - GoogleDataTransportCCTSupport (1.4.1): - - GoogleDataTransport (~> 4.0) - - nanopb (~> 0.3.901) + - GoogleAppMeasurement (6.6.1): + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (~> 1.30905.0) + - GoogleDataTransport (6.2.1) + - GoogleDataTransportCCTSupport (3.2.0): + - GoogleDataTransport (~> 6.1) + - nanopb (~> 1.30905.0) - GoogleToolboxForMac/DebugUtils (2.2.2): - GoogleToolboxForMac/Defines (= 2.2.2) - GoogleToolboxForMac/Defines (2.2.2) @@ -80,29 +97,43 @@ PODS: - GoogleToolboxForMac/Defines (= 2.2.2) - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.2)" - "GoogleToolboxForMac/NSString+URLArguments (2.2.2)" - - GoogleUtilities/Environment (6.5.1) - - GoogleUtilities/Logger (6.5.1): + - GoogleUtilities/AppDelegateSwizzler (6.6.0): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (6.6.0): + - PromisesObjC (~> 1.2) + - GoogleUtilities/Logger (6.6.0): - GoogleUtilities/Environment - - GoogleUtilities/UserDefaults (6.5.1): + - GoogleUtilities/MethodSwizzler (6.6.0): + - GoogleUtilities/Logger + - GoogleUtilities/Network (6.6.0): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (6.6.0)" + - GoogleUtilities/Reachability (6.6.0): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (6.6.0): - GoogleUtilities/Logger - - GTMSessionFetcher (1.3.1): - - GTMSessionFetcher/Full (= 1.3.1) - - GTMSessionFetcher/Core (1.3.1) - - GTMSessionFetcher/Full (1.3.1): - - GTMSessionFetcher/Core (= 1.3.1) + - GTMSessionFetcher (1.4.0): + - GTMSessionFetcher/Full (= 1.4.0) + - GTMSessionFetcher/Core (1.4.0) + - GTMSessionFetcher/Full (1.4.0): + - GTMSessionFetcher/Core (= 1.4.0) - IQKeyboardManagerSwift (6.2.0) - MarqueeLabel/Swift (3.2.0) - - nanopb (0.3.9011): - - nanopb/decode (= 0.3.9011) - - nanopb/encode (= 0.3.9011) - - nanopb/decode (0.3.9011) - - nanopb/encode (0.3.9011) + - nanopb (1.30905.0): + - nanopb/decode (= 1.30905.0) + - nanopb/encode (= 1.30905.0) + - nanopb/decode (1.30905.0) + - nanopb/encode (1.30905.0) - NotificationBannerSwift (1.7.3): - MarqueeLabel/Swift (~> 3.2.0) - SnapKit (~> 4.0.1) - Popover (1.2.2) - - PromisesObjC (1.2.8) - - Protobuf (3.11.4) + - PromisesObjC (1.2.9) + - Protobuf (3.12.0) - SDWebImage (4.4.2): - SDWebImage/Core (= 4.4.2) - SDWebImage/Core (4.4.2) @@ -113,6 +144,7 @@ PODS: DEPENDENCIES: - Alamofire - Cosmos (~> 20.0) + - Firebase/Core - Firebase/Crashlytics - Firebase/MLVision - Firebase/MLVisionTextModel @@ -128,10 +160,9 @@ SPEC REPOS: - Alamofire - Cosmos - Firebase - - FirebaseAnalyticsInterop + - FirebaseAnalytics - FirebaseCore - FirebaseCoreDiagnostics - - FirebaseCoreDiagnosticsInterop - FirebaseCrashlytics - FirebaseInstallations - FirebaseInstanceID @@ -139,6 +170,7 @@ SPEC REPOS: - FirebaseMLVision - FirebaseMLVisionTextModel - GoogleAPIClientForREST + - GoogleAppMeasurement - GoogleDataTransport - GoogleDataTransportCCTSupport - GoogleToolboxForMac @@ -159,35 +191,35 @@ SPEC REPOS: SPEC CHECKSUMS: Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568 Cosmos: b47fddf2102bb48580cd3025d9ce0a5c658a65da - Firebase: 0490eca762a72e4f1582319539153897f1508dee - FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae - FirebaseCore: 78276943ad85e616dfa54dafa6c89512987d9d60 - FirebaseCoreDiagnostics: 2109d10c35e8289b1ee6cabf44d9ffb055620194 - FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 - FirebaseCrashlytics: 1dff71c846a3a138f524f79d4740ffed5fdd0c04 - FirebaseInstallations: 575cd32f2aec0feeb0e44f5d0110a09e5e60b47b - FirebaseInstanceID: 7ee0d6777013bb952f377b41965bf132b6a075be - FirebaseMLCommon: 074a67e05122b1c9f6401a4e33b2cea3b4efd224 - FirebaseMLVision: 7a456009787690e3b53436092ae9b635563de8f3 - FirebaseMLVisionTextModel: c264caa3100ca804580bf2a7c1cb9ff390d1f471 - GoogleAPIClientForREST: 0f19a8280dfe6471f76016645d26eb5dae305101 - GoogleDataTransport: 653963cf5be60fb59cf051e070f0836fdc305f81 - GoogleDataTransportCCTSupport: 84e4d4bbab642f2e9d83ee65d78aca2b5527d314 + Firebase: fc4cbf6f1592636431821ef9a3c557e4dfd9f268 + FirebaseAnalytics: 0ea640473474f036cabbc2576e20c2d63671c92f + FirebaseCore: feda061cb1ee6d8ad4824f4a4a8ffbcfe284f595 + FirebaseCoreDiagnostics: 4505e4d4009b1d93f605088ee7d7764d5f0d1c84 + FirebaseCrashlytics: 7d0fa02ea8842cc4b2ab07b0735edafde1ad77d6 + FirebaseInstallations: 293f567159b6d66d1c990f13bb868066096c94ec + FirebaseInstanceID: 3b119bfe90e904851218159c9a4ecb847cc51d18 + FirebaseMLCommon: 5e1184cfdddbd097f55cad75b598881d348d900f + FirebaseMLVision: 485358b97d3332669ecc4fed55ee360aaef2813d + FirebaseMLVisionTextModel: 2ec9bf2287b29ef2b7d79152aad454cce5bc3040 + GoogleAPIClientForREST: 9f49df9fac7867b459187e687fed3066b2be049a + GoogleAppMeasurement: 2fd5c5a56c069db635c8e7b92d4809a9591d0a69 + GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020 + GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d GoogleToolboxForMac: 800648f8b3127618c1b59c7f97684427630c5ea3 - GoogleUtilities: 06eb53bb579efe7099152735900dd04bf09e7275 - GTMSessionFetcher: cea130bbfe5a7edc8d06d3f0d17288c32ffe9925 + GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1 + GTMSessionFetcher: 6f5c8abbab8a9bce4bb3f057e317728ec6182b10 IQKeyboardManagerSwift: b07ccf9d8cafe993dcd6cb794eb4ba34611a0c4e MarqueeLabel: 440a502b91a9179bd98f9fff00ba1150650a1c0e - nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd + nanopb: c43f40fadfe79e8b8db116583945847910cbabc9 NotificationBannerSwift: c9f4bc868d78df975ed59c0b2fccdbbe0e863efe Popover: 21e357f86d45c8d9e29a41a4adbca3664d6e511f - PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6 - Protobuf: 176220c526ad8bd09ab1fb40a978eac3fef665f7 + PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75 + Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9 SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681 SnapKit: 0de968a9fec17499afa29683b05d0c775b6d1c29 SwiftyJSON: c4bcba26dd9ec7a027fc8eade48e2c911f229e96 UILoadControl: e742ddbe4c67ba1f13b00b7d462d4141307d021f -PODFILE CHECKSUM: 8c713f5133988e4ef9222c95efa9cf1d9b3f112c +PODFILE CHECKSUM: 89c1cd1b108b9932cfe1cd5e08880e958ddcff2c COCOAPODS: 1.8.4 diff --git a/Pods/Firebase/README.md b/Pods/Firebase/README.md index ab36632..d778205 100644 --- a/Pods/Firebase/README.md +++ b/Pods/Firebase/README.md @@ -1,12 +1,29 @@ -# Firebase iOS Open Source Development - [![Actions Status][gh-core-badge]][gh-actions] - [![Actions Status][gh-dynamiclinks-badge]][gh-actions] - [![Actions Status][gh-datatransport-badge]][gh-actions] - [![Actions Status][gh-storage-badge]][gh-actions] - [![Actions Status][gh-zip-badge]][gh-actions] - [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains all Firebase iOS SDK source except FirebaseAnalytics, +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The @@ -72,12 +89,16 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least the following software: - * Xcode 10.1 (or later) + * Xcode 10.3 (or later) * CocoaPods 1.7.2 (or later) * [CocoaPods generate](https://github.com/square/cocoapods-generate) @@ -108,6 +129,10 @@ Firestore has a self contained Xcode project. See See [AddNewPod.md](AddNewPod.md). +### Managing Headers and Imports + +See [HeadersImports.md](HeadersImports.md). + ### Code Formatting To ensure that the code is formatted consistently, run the script @@ -119,8 +144,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -134,7 +159,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -165,18 +190,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -202,32 +235,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -257,8 +292,20 @@ Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). [gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg [gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg [gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg [gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg [gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg [gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector b/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector new file mode 100755 index 0000000..dd94381 Binary files /dev/null and b/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector differ diff --git a/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/Modules/module.modulemap b/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/Modules/module.modulemap new file mode 100755 index 0000000..99a4b1d --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module FIRAnalyticsConnector { + export * + module * { export * } + link "sqlite3" + link "z" + link framework "CoreData" + link framework "Security" + link framework "StoreKit" + link framework "SystemConfiguration" + link framework "UIKit" +} diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/FirebaseAnalytics b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/FirebaseAnalytics new file mode 100755 index 0000000..656fb34 Binary files /dev/null and b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/FirebaseAnalytics differ diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h new file mode 100755 index 0000000..d499af6 --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h @@ -0,0 +1,62 @@ +#import + +#import "FIRAnalytics.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Provides App Delegate handlers to be used in your App Delegate. + * + * To save time integrating Firebase Analytics in an application, Firebase Analytics does not + * require delegation implementation from the AppDelegate. Instead this is automatically done by + * Firebase Analytics. Should you choose instead to delegate manually, you can turn off the App + * Delegate Proxy by adding FirebaseAppDelegateProxyEnabled into your app's Info.plist and setting + * it to NO, and adding the methods in this category to corresponding delegation handlers. + * + * To handle Universal Links, you must return YES in + * [UIApplicationDelegate application:didFinishLaunchingWithOptions:]. + */ +@interface FIRAnalytics (AppDelegate) + +/** + * Handles events related to a URL session that are waiting to be processed. + * + * For optimal use of Firebase Analytics, call this method from the + * [UIApplicationDelegate application:handleEventsForBackgroundURLSession:completionHandler] + * method of the app delegate in your app. + * + * @param identifier The identifier of the URL session requiring attention. + * @param completionHandler The completion handler to call when you finish processing the events. + * Calling this completion handler lets the system know that your app's user interface is + * updated and a new snapshot can be taken. + */ ++ (void)handleEventsForBackgroundURLSession:(NSString *)identifier + completionHandler:(nullable void (^)(void))completionHandler; + +/** + * Handles the event when the app is launched by a URL. + * + * Call this method from [UIApplicationDelegate application:openURL:options:] (on iOS 9.0 and + * above), or [UIApplicationDelegate application:openURL:sourceApplication:annotation:] (on + * iOS 8.x and below) in your app. + * + * @param url The URL resource to open. This resource can be a network resource or a file. + */ ++ (void)handleOpenURL:(NSURL *)url; + +/** + * Handles the event when the app receives data associated with user activity that includes a + * Universal Link (on iOS 9.0 and above). + * + * Call this method from [UIApplication continueUserActivity:restorationHandler:] in your app + * delegate (on iOS 9.0 and above). + * + * @param userActivity The activity object containing the data associated with the task the user + * was performing. + */ ++ (void)handleUserActivity:(id)userActivity; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h new file mode 100755 index 0000000..be0b1fa --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h @@ -0,0 +1,136 @@ +#import + +#import "FIREventNames.h" +#import "FIRParameterNames.h" +#import "FIRUserPropertyNames.h" + +NS_ASSUME_NONNULL_BEGIN + +/// The top level Firebase Analytics singleton that provides methods for logging events and setting +/// user properties. See the developer guides for general +/// information on using Firebase Analytics in your apps. +/// +/// @note The Analytics SDK uses SQLite to persist events and other app-specific data. Calling +/// certain thread-unsafe global SQLite methods like `sqlite3_shutdown()` can result in +/// unexpected crashes at runtime. +NS_SWIFT_NAME(Analytics) +@interface FIRAnalytics : NSObject + +/// Logs an app event. The event can have up to 25 parameters. Events with the same name must have +/// the same parameters. Up to 500 event names are supported. Using predefined events and/or +/// parameters is recommended for optimal reporting. +/// +/// The following event names are reserved and cannot be used: +/// +/// +/// @param name The name of the event. Should contain 1 to 40 alphanumeric characters or +/// underscores. The name must start with an alphabetic character. Some event names are +/// reserved. See FIREventNames.h for the list of reserved event names. The "firebase_", +/// "google_", and "ga_" prefixes are reserved and should not be used. Note that event names are +/// case-sensitive and that logging two events whose names differ only in case will result in +/// two distinct events. +/// @param parameters The dictionary of event parameters. Passing nil indicates that the event has +/// no parameters. Parameter names can be up to 40 characters long and must start with an +/// alphabetic character and contain only alphanumeric characters and underscores. Only NSString +/// and NSNumber (signed 64-bit integer and 64-bit floating-point number) parameter types are +/// supported. NSString parameter values can be up to 100 characters long. The "firebase_", +/// "google_", and "ga_" prefixes are reserved and should not be used for parameter names. ++ (void)logEventWithName:(NSString *)name + parameters:(nullable NSDictionary *)parameters + NS_SWIFT_NAME(logEvent(_:parameters:)); + +/// Sets a user property to a given value. Up to 25 user property names are supported. Once set, +/// user property values persist throughout the app lifecycle and across sessions. +/// +/// The following user property names are reserved and cannot be used: +///
    +///
  • first_open_time
  • +///
  • last_deep_link_referrer
  • +///
  • user_id
  • +///
+/// +/// @param value The value of the user property. Values can be up to 36 characters long. Setting the +/// value to nil removes the user property. +/// @param name The name of the user property to set. Should contain 1 to 24 alphanumeric characters +/// or underscores and must start with an alphabetic character. The "firebase_", "google_", and +/// "ga_" prefixes are reserved and should not be used for user property names. ++ (void)setUserPropertyString:(nullable NSString *)value forName:(NSString *)name + NS_SWIFT_NAME(setUserProperty(_:forName:)); + +/// Sets the user ID property. This feature must be used in accordance with +/// Google's Privacy Policy +/// +/// @param userID The user ID to ascribe to the user of this app on this device, which must be +/// non-empty and no more than 256 characters long. Setting userID to nil removes the user ID. ++ (void)setUserID:(nullable NSString *)userID; + +/// Sets the current screen name, which specifies the current visual context in your app. This helps +/// identify the areas in your app where users spend their time and how they interact with your app. +/// Must be called on the main thread. +/// +/// Note that screen reporting is enabled automatically and records the class name of the current +/// UIViewController for you without requiring you to call this method. If you implement +/// viewDidAppear in your UIViewController but do not call [super viewDidAppear:], that screen class +/// will not be automatically tracked. The class name can optionally be overridden by calling this +/// method in the viewDidAppear callback of your UIViewController and specifying the +/// screenClassOverride parameter. setScreenName:screenClass: must be called after +/// [super viewDidAppear:]. +/// +/// If your app does not use a distinct UIViewController for each screen, you should call this +/// method and specify a distinct screenName each time a new screen is presented to the user. +/// +/// The screen name and screen class remain in effect until the current UIViewController changes or +/// a new call to setScreenName:screenClass: is made. +/// +/// @param screenName The name of the current screen. Should contain 1 to 100 characters. Set to nil +/// to clear the current screen name. +/// @param screenClassOverride The name of the screen class. Should contain 1 to 100 characters. By +/// default this is the class name of the current UIViewController. Set to nil to revert to the +/// default class name. ++ (void)setScreenName:(nullable NSString *)screenName + screenClass:(nullable NSString *)screenClassOverride; + +/// Sets whether analytics collection is enabled for this app on this device. This setting is +/// persisted across app sessions. By default it is enabled. +/// +/// @param analyticsCollectionEnabled A flag that enables or disables Analytics collection. ++ (void)setAnalyticsCollectionEnabled:(BOOL)analyticsCollectionEnabled; + +/// Sets the interval of inactivity in seconds that terminates the current session. The default +/// value is 1800 seconds (30 minutes). +/// +/// @param sessionTimeoutInterval The custom time of inactivity in seconds before the current +/// session terminates. ++ (void)setSessionTimeoutInterval:(NSTimeInterval)sessionTimeoutInterval; + +/// The unique ID for this instance of the application. ++ (NSString *)appInstanceID; + +/// Clears all analytics data for this instance from the device and resets the app instance ID. +/// FIRAnalyticsConfiguration values will be reset to the default values. ++ (void)resetAnalyticsData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h new file mode 100755 index 0000000..807b615 --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h @@ -0,0 +1,471 @@ +/// @file FIREventNames.h +/// +/// Predefined event names. +/// +/// An Event is an important occurrence in your app that you want to measure. You can report up to +/// 500 different types of Events per app and you can associate up to 25 unique parameters with each +/// Event type. Some common events are suggested below, but you may also choose to specify custom +/// Event types that are associated with your specific app. Each event type is identified by a +/// unique name. Event names can be up to 40 characters long, may only contain alphanumeric +/// characters and underscores ("_"), and must start with an alphabetic character. The "firebase_", +/// "google_", and "ga_" prefixes are reserved and should not be used. + +#import + +/// Add Payment Info event. This event signifies that a user has submitted their payment +/// information. Note: If you supply the @c kFIRParameterValue parameter, you must also supply the +/// @c kFIRParameterCurrency parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterCoupon (NSString) (optional)
  • +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterPaymentType (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventAddPaymentInfo NS_SWIFT_NAME(AnalyticsEventAddPaymentInfo) = + @"add_payment_info"; + +/// E-Commerce Add To Cart event. This event signifies that an item(s) was added to a cart for +/// purchase. Add this event to a funnel with @c kFIREventPurchase to gauge the effectiveness of +/// your checkout process. Note: If you supply the @c kFIRParameterValue parameter, you must also +/// supply the @c kFIRParameterCurrency parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventAddToCart NS_SWIFT_NAME(AnalyticsEventAddToCart) = @"add_to_cart"; + +/// E-Commerce Add To Wishlist event. This event signifies that an item was added to a wishlist. Use +/// this event to identify popular gift items. Note: If you supply the @c kFIRParameterValue +/// parameter, you must also supply the @c kFIRParameterCurrency parameter so that revenue metrics +/// can be computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventAddToWishlist NS_SWIFT_NAME(AnalyticsEventAddToWishlist) = + @"add_to_wishlist"; + +/// App Open event. By logging this event when an App becomes active, developers can understand how +/// often users leave and return during the course of a Session. Although Sessions are automatically +/// reported, this event can provide further clarification around the continuous engagement of +/// app-users. +static NSString *const kFIREventAppOpen NS_SWIFT_NAME(AnalyticsEventAppOpen) = @"app_open"; + +/// E-Commerce Begin Checkout event. This event signifies that a user has begun the process of +/// checking out. Add this event to a funnel with your @c kFIREventPurchase event to gauge the +/// effectiveness of your checkout process. Note: If you supply the @c kFIRParameterValue parameter, +/// you must also supply the @c kFIRParameterCurrency parameter so that revenue metrics can be +/// computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterCoupon (NSString) (optional)
  • +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventBeginCheckout NS_SWIFT_NAME(AnalyticsEventBeginCheckout) = + @"begin_checkout"; + +/// Campaign Detail event. Log this event to supply the referral details of a re-engagement +/// campaign. Note: you must supply at least one of the required parameters kFIRParameterSource, +/// kFIRParameterMedium or kFIRParameterCampaign. Params: +/// +///
    +///
  • @c kFIRParameterSource (NSString)
  • +///
  • @c kFIRParameterMedium (NSString)
  • +///
  • @c kFIRParameterCampaign (NSString)
  • +///
  • @c kFIRParameterTerm (NSString) (optional)
  • +///
  • @c kFIRParameterContent (NSString) (optional)
  • +///
  • @c kFIRParameterAdNetworkClickID (NSString) (optional)
  • +///
  • @c kFIRParameterCP1 (NSString) (optional)
  • +///
+static NSString *const kFIREventCampaignDetails NS_SWIFT_NAME(AnalyticsEventCampaignDetails) = + @"campaign_details"; + +/// Checkout progress. Params: +/// +///
    +///
  • @c kFIRParameterCheckoutStep (unsigned 64-bit integer as NSNumber)
  • +///
  • @c kFIRParameterCheckoutOption (NSString) (optional)
  • +///
+/// This constant has been deprecated. +static NSString *const kFIREventCheckoutProgress NS_SWIFT_NAME(AnalyticsEventCheckoutProgress) = + @"checkout_progress"; + +/// Earn Virtual Currency event. This event tracks the awarding of virtual currency in your app. Log +/// this along with @c kFIREventSpendVirtualCurrency to better understand your virtual economy. +/// Params: +/// +///
    +///
  • @c kFIRParameterVirtualCurrencyName (NSString)
  • +///
  • @c kFIRParameterValue (signed 64-bit integer or double as NSNumber)
  • +///
+static NSString *const kFIREventEarnVirtualCurrency + NS_SWIFT_NAME(AnalyticsEventEarnVirtualCurrency) = @"earn_virtual_currency"; + +/// E-Commerce Purchase event. This event signifies that an item was purchased by a user. Note: +/// This is different from the in-app purchase event, which is reported automatically for App +/// Store-based apps. Note: If you supply the @c kFIRParameterValue parameter, you must also +/// supply the @c kFIRParameterCurrency parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterTransactionID (NSString) (optional)
  • +///
  • @c kFIRParameterTax (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterShipping (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterCoupon (NSString) (optional)
  • +///
  • @c kFIRParameterLocation (NSString) (optional)
  • +///
  • @c kFIRParameterStartDate (NSString) (optional)
  • +///
  • @c kFIRParameterEndDate (NSString) (optional)
  • +///
  • @c kFIRParameterNumberOfNights (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • @c kFIRParameterNumberOfRooms (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • @c kFIRParameterNumberOfPassengers (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • @c kFIRParameterOrigin (NSString) (optional)
  • +///
  • @c kFIRParameterDestination (NSString) (optional)
  • +///
  • @c kFIRParameterTravelClass (NSString) (optional) for travel bookings
  • +///
+/// This constant has been deprecated. Use @c kFIREventPurchase constant instead. +static NSString *const kFIREventEcommercePurchase NS_SWIFT_NAME(AnalyticsEventEcommercePurchase) = + @"ecommerce_purchase"; + +/// Generate Lead event. Log this event when a lead has been generated in the app to understand the +/// efficacy of your install and re-engagement campaigns. Note: If you supply the +/// @c kFIRParameterValue parameter, you must also supply the @c kFIRParameterCurrency +/// parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventGenerateLead NS_SWIFT_NAME(AnalyticsEventGenerateLead) = + @"generate_lead"; + +/// Join Group event. Log this event when a user joins a group such as a guild, team or family. Use +/// this event to analyze how popular certain groups or social features are in your app. Params: +/// +///
    +///
  • @c kFIRParameterGroupID (NSString)
  • +///
+static NSString *const kFIREventJoinGroup NS_SWIFT_NAME(AnalyticsEventJoinGroup) = @"join_group"; + +/// Level End event. Log this event when the user finishes a level. Params: +/// +///
    +///
  • @c kFIRParameterLevelName (NSString)
  • +///
  • @c kFIRParameterSuccess (NSString)
  • +///
+static NSString *const kFIREventLevelEnd NS_SWIFT_NAME(AnalyticsEventLevelEnd) = @"level_end"; + +/// Level Start event. Log this event when the user starts a new level. Params: +/// +///
    +///
  • @c kFIRParameterLevelName (NSString)
  • +///
+static NSString *const kFIREventLevelStart NS_SWIFT_NAME(AnalyticsEventLevelStart) = @"level_start"; + +/// Level Up event. This event signifies that a player has leveled up in your gaming app. It can +/// help you gauge the level distribution of your userbase and help you identify certain levels that +/// are difficult to pass. Params: +/// +///
    +///
  • @c kFIRParameterLevel (signed 64-bit integer as NSNumber)
  • +///
  • @c kFIRParameterCharacter (NSString) (optional)
  • +///
+static NSString *const kFIREventLevelUp NS_SWIFT_NAME(AnalyticsEventLevelUp) = @"level_up"; + +/// Login event. Apps with a login feature can report this event to signify that a user has logged +/// in. +static NSString *const kFIREventLogin NS_SWIFT_NAME(AnalyticsEventLogin) = @"login"; + +/// Post Score event. Log this event when the user posts a score in your gaming app. This event can +/// help you understand how users are actually performing in your game and it can help you correlate +/// high scores with certain audiences or behaviors. Params: +/// +///
    +///
  • @c kFIRParameterScore (signed 64-bit integer as NSNumber)
  • +///
  • @c kFIRParameterLevel (signed 64-bit integer as NSNumber) (optional)
  • +///
  • @c kFIRParameterCharacter (NSString) (optional)
  • +///
+static NSString *const kFIREventPostScore NS_SWIFT_NAME(AnalyticsEventPostScore) = @"post_score"; + +/// Present Offer event. This event signifies that the app has presented a purchase offer to a user. +/// Add this event to a funnel with the kFIREventAddToCart and kFIREventEcommercePurchase to gauge +/// your conversion process. Note: If you supply the @c kFIRParameterValue parameter, you must +/// also supply the @c kFIRParameterCurrency parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • @c kFIRParameterQuantity (signed 64-bit integer as NSNumber)
  • +///
  • @c kFIRParameterItemID (NSString)
  • +///
  • @c kFIRParameterItemName (NSString)
  • +///
  • @c kFIRParameterItemCategory (NSString)
  • +///
  • @c kFIRParameterItemLocationID (NSString) (optional)
  • +///
  • @c kFIRParameterPrice (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+/// This constant has been deprecated. Use @c kFIREventViewPromotion constant instead. +static NSString *const kFIREventPresentOffer NS_SWIFT_NAME(AnalyticsEventPresentOffer) = + @"present_offer"; + +/// E-Commerce Purchase Refund event. This event signifies that an item purchase was refunded. +/// Note: If you supply the @c kFIRParameterValue parameter, you must also supply the +/// @c kFIRParameterCurrency parameter so that revenue metrics can be computed accurately. +/// Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterTransactionID (NSString) (optional)
  • +///
+/// This constant has been deprecated. Use @c kFIREventRefund constant instead. +static NSString *const kFIREventPurchaseRefund NS_SWIFT_NAME(AnalyticsEventPurchaseRefund) = + @"purchase_refund"; + +/// E-Commerce Remove from Cart event. This event signifies that an item(s) was removed from a cart. +/// Note: If you supply the @c kFIRParameterValue parameter, you must also supply the @c +/// kFIRParameterCurrency parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventRemoveFromCart NS_SWIFT_NAME(AnalyticsEventRemoveFromCart) = + @"remove_from_cart"; + +/// Search event. Apps that support search features can use this event to contextualize search +/// operations by supplying the appropriate, corresponding parameters. This event can help you +/// identify the most popular content in your app. Params: +/// +///
    +///
  • @c kFIRParameterSearchTerm (NSString)
  • +///
  • @c kFIRParameterStartDate (NSString) (optional)
  • +///
  • @c kFIRParameterEndDate (NSString) (optional)
  • +///
  • @c kFIRParameterNumberOfNights (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • @c kFIRParameterNumberOfRooms (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • @c kFIRParameterNumberOfPassengers (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • @c kFIRParameterOrigin (NSString) (optional)
  • +///
  • @c kFIRParameterDestination (NSString) (optional)
  • +///
  • @c kFIRParameterTravelClass (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventSearch NS_SWIFT_NAME(AnalyticsEventSearch) = @"search"; + +/// Select Content event. This general purpose event signifies that a user has selected some content +/// of a certain type in an app. The content can be any object in your app. This event can help you +/// identify popular content and categories of content in your app. Params: +/// +///
    +///
  • @c kFIRParameterContentType (NSString)
  • +///
  • @c kFIRParameterItemID (NSString)
  • +///
+static NSString *const kFIREventSelectContent NS_SWIFT_NAME(AnalyticsEventSelectContent) = + @"select_content"; + +/// Set checkout option. Params: +/// +///
    +///
  • @c kFIRParameterCheckoutStep (unsigned 64-bit integer as NSNumber)
  • +///
  • @c kFIRParameterCheckoutOption (NSString)
  • +///
+/// This constant has been deprecated. +static NSString *const kFIREventSetCheckoutOption NS_SWIFT_NAME(AnalyticsEventSetCheckoutOption) = + @"set_checkout_option"; + +/// Share event. Apps with social features can log the Share event to identify the most viral +/// content. Params: +/// +///
    +///
  • @c kFIRParameterContentType (NSString)
  • +///
  • @c kFIRParameterItemID (NSString)
  • +///
+static NSString *const kFIREventShare NS_SWIFT_NAME(AnalyticsEventShare) = @"share"; + +/// Sign Up event. This event indicates that a user has signed up for an account in your app. The +/// parameter signifies the method by which the user signed up. Use this event to understand the +/// different behaviors between logged in and logged out users. Params: +/// +///
    +///
  • @c kFIRParameterSignUpMethod (NSString)
  • +///
+static NSString *const kFIREventSignUp NS_SWIFT_NAME(AnalyticsEventSignUp) = @"sign_up"; + +/// Spend Virtual Currency event. This event tracks the sale of virtual goods in your app and can +/// help you identify which virtual goods are the most popular objects of purchase. Params: +/// +///
    +///
  • @c kFIRParameterItemName (NSString)
  • +///
  • @c kFIRParameterVirtualCurrencyName (NSString)
  • +///
  • @c kFIRParameterValue (signed 64-bit integer or double as NSNumber)
  • +///
+static NSString *const kFIREventSpendVirtualCurrency + NS_SWIFT_NAME(AnalyticsEventSpendVirtualCurrency) = @"spend_virtual_currency"; + +/// Tutorial Begin event. This event signifies the start of the on-boarding process in your app. Use +/// this in a funnel with kFIREventTutorialComplete to understand how many users complete this +/// process and move on to the full app experience. +static NSString *const kFIREventTutorialBegin NS_SWIFT_NAME(AnalyticsEventTutorialBegin) = + @"tutorial_begin"; + +/// Tutorial End event. Use this event to signify the user's completion of your app's on-boarding +/// process. Add this to a funnel with kFIREventTutorialBegin to gauge the completion rate of your +/// on-boarding process. +static NSString *const kFIREventTutorialComplete NS_SWIFT_NAME(AnalyticsEventTutorialComplete) = + @"tutorial_complete"; + +/// Unlock Achievement event. Log this event when the user has unlocked an achievement in your +/// game. Since achievements generally represent the breadth of a gaming experience, this event can +/// help you understand how many users are experiencing all that your game has to offer. Params: +/// +///
    +///
  • @c kFIRParameterAchievementID (NSString)
  • +///
+static NSString *const kFIREventUnlockAchievement NS_SWIFT_NAME(AnalyticsEventUnlockAchievement) = + @"unlock_achievement"; + +/// View Item event. This event signifies that a user has viewed an item. Use the appropriate +/// parameters to contextualize the event. Use this event to discover the most popular items viewed +/// in your app. Note: If you supply the @c kFIRParameterValue parameter, you must also supply the +/// @c kFIRParameterCurrency parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventViewItem NS_SWIFT_NAME(AnalyticsEventViewItem) = @"view_item"; + +/// View Item List event. Log this event when a user sees a list of items or offerings. Params: +/// +///
    +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterItemListID (NSString) (optional)
  • +///
  • @c kFIRParameterItemListName (NSString) (optional)
  • +///
+static NSString *const kFIREventViewItemList NS_SWIFT_NAME(AnalyticsEventViewItemList) = + @"view_item_list"; + +/// View Search Results event. Log this event when the user has been presented with the results of a +/// search. Params: +/// +///
    +///
  • @c kFIRParameterSearchTerm (NSString)
  • +///
+static NSString *const kFIREventViewSearchResults NS_SWIFT_NAME(AnalyticsEventViewSearchResults) = + @"view_search_results"; + +/// Add Shipping Info event. This event signifies that a user has submitted their shipping +/// information. Note: If you supply the @c kFIRParameterValue parameter, you must also supply the +/// @c kFIRParameterCurrency parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterCoupon (NSString) (optional)
  • +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterShippingTier (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventAddShippingInfo NS_SWIFT_NAME(AnalyticsEventAddShippingInfo) = + @"add_shipping_info"; + +/// E-Commerce Purchase event. This event signifies that an item(s) was purchased by a user. Note: +/// This is different from the in-app purchase event, which is reported automatically for App +/// Store-based apps. Note: If you supply the @c kFIRParameterValue parameter, you must also supply +/// the @c kFIRParameterCurrency parameter so that revenue metrics can be computed accurately. +/// Params: +/// +///
    +///
  • @c kFIRParameterAffiliation (NSString) (optional)
  • +///
  • @c kFIRParameterCoupon (NSString) (optional)
  • +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterShipping (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterTax (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterTransactionID (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventPurchase NS_SWIFT_NAME(AnalyticsEventPurchase) = @"purchase"; + +/// E-Commerce Refund event. This event signifies that a refund was issued. Note: If you supply the +/// @c kFIRParameterValue parameter, you must also supply the @c kFIRParameterCurrency parameter so +/// that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • @c kFIRParameterAffiliation (NSString) (optional)
  • +///
  • @c kFIRParameterCoupon (NSString) (optional)
  • +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterShipping (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterTax (double as NSNumber) (optional)
  • +///
  • @c kFIRParameterTransactionID (NSString) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventRefund NS_SWIFT_NAME(AnalyticsEventRefund) = @"refund"; + +/// Select Item event. This event signifies that an item was selected by a user from a list. Use the +/// appropriate parameters to contextualize the event. Use this event to discover the most popular +/// items selected. Params: +/// +///
    +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterItemListID (NSString) (optional)
  • +///
  • @c kFIRParameterItemListName (NSString) (optional)
  • +///
+static NSString *const kFIREventSelectItem NS_SWIFT_NAME(AnalyticsEventSelectItem) = @"select_item"; + +/// Select promotion event. This event signifies that a user has selected a promotion offer. Use the +/// appropriate parameters to contextualize the event, such as the item(s) for which the promotion +/// applies. Params: +/// +///
    +///
  • @c kFIRParameterCreativeName (NSString) (optional)
  • +///
  • @c kFIRParameterCreativeSlot (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterLocationID (NSString) (optional)
  • +///
  • @c kFIRParameterPromotionID (NSString) (optional)
  • +///
  • @c kFIRParameterPromotionName (NSString) (optional)
  • +///
+static NSString *const kFIREventSelectPromotion NS_SWIFT_NAME(AnalyticsEventSelectPromotion) = + @"select_promotion"; + +/// E-commerce View Cart event. This event signifies that a user has viewed their cart. Use this to +/// analyze your purchase funnel. Note: If you supply the @c kFIRParameterValue parameter, you must +/// also supply the @c kFIRParameterCurrency parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • @c kFIRParameterCurrency (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterValue (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventViewCart NS_SWIFT_NAME(AnalyticsEventViewCart) = @"view_cart"; + +/// View Promotion event. This event signifies that a promotion was shown to a user. Add this event +/// to a funnel with the @c kFIREventAddToCart and @c kFIREventPurchase to gauge your conversion +/// process. Params: +/// +///
    +///
  • @c kFIRParameterCreativeName (NSString) (optional)
  • +///
  • @c kFIRParameterCreativeSlot (NSString) (optional)
  • +///
  • @c kFIRParameterItems (NSArray) (optional)
  • +///
  • @c kFIRParameterLocationID (NSString) (optional)
  • +///
  • @c kFIRParameterPromotionID (NSString) (optional)
  • +///
  • @c kFIRParameterPromotionName (NSString) (optional)
  • +///
+static NSString *const kFIREventViewPromotion NS_SWIFT_NAME(AnalyticsEventViewPromotion) = + @"view_promotion"; diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h new file mode 100755 index 0000000..5775d86 --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h @@ -0,0 +1,670 @@ +/// @file FIRParameterNames.h +/// +/// Predefined event parameter names. +/// +/// Params supply information that contextualize Events. You can associate up to 25 unique Params +/// with each Event type. Some Params are suggested below for certain common Events, but you are +/// not limited to these. You may supply extra Params for suggested Events or custom Params for +/// Custom events. Param names can be up to 40 characters long, may only contain alphanumeric +/// characters and underscores ("_"), and must start with an alphabetic character. Param values can +/// be up to 100 characters long. The "firebase_", "google_", and "ga_" prefixes are reserved and +/// should not be used. + +#import + +/// Game achievement ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterAchievementID : @"10_matches_won",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterAchievementID NS_SWIFT_NAME(AnalyticsParameterAchievementID) = + @"achievement_id"; + +/// Ad Network Click ID (NSString). Used for network-specific click IDs which vary in format. +///
+///     NSDictionary *params = @{
+///       kFIRParameterAdNetworkClickID : @"1234567",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterAdNetworkClickID + NS_SWIFT_NAME(AnalyticsParameterAdNetworkClickID) = @"aclid"; + +/// A product affiliation to designate a supplying company or brick and mortar store location +/// (NSString).
+///     NSDictionary *params = @{
+///       kFIRParameterAffiliation : @"Google Store",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterAffiliation NS_SWIFT_NAME(AnalyticsParameterAffiliation) = + @"affiliation"; + +/// The individual campaign name, slogan, promo code, etc. Some networks have pre-defined macro to +/// capture campaign information, otherwise can be populated by developer. Highly Recommended +/// (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCampaign : @"winter_promotion",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCampaign NS_SWIFT_NAME(AnalyticsParameterCampaign) = + @"campaign"; + +/// Character used in game (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCharacter : @"beat_boss",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCharacter NS_SWIFT_NAME(AnalyticsParameterCharacter) = + @"character"; + +/// The checkout step (1..N) (unsigned 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCheckoutStep : @"1",
+///       // ...
+///     };
+/// 
+/// This constant has been deprecated. +static NSString *const kFIRParameterCheckoutStep NS_SWIFT_NAME(AnalyticsParameterCheckoutStep) = + @"checkout_step"; + +/// Some option on a step in an ecommerce flow (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCheckoutOption : @"Visa",
+///       // ...
+///     };
+/// 
+/// This constant has been deprecated. +static NSString *const kFIRParameterCheckoutOption + NS_SWIFT_NAME(AnalyticsParameterCheckoutOption) = @"checkout_option"; + +/// Campaign content (NSString). +static NSString *const kFIRParameterContent NS_SWIFT_NAME(AnalyticsParameterContent) = @"content"; + +/// Type of content selected (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterContentType : @"news article",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterContentType NS_SWIFT_NAME(AnalyticsParameterContentType) = + @"content_type"; + +/// Coupon code used for a purchase (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCoupon : @"SUMMER_FUN",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCoupon NS_SWIFT_NAME(AnalyticsParameterCoupon) = @"coupon"; + +/// Campaign custom parameter (NSString). Used as a method of capturing custom data in a campaign. +/// Use varies by network. +///
+///     NSDictionary *params = @{
+///       kFIRParameterCP1 : @"custom_data",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCP1 NS_SWIFT_NAME(AnalyticsParameterCP1) = @"cp1"; + +/// The name of a creative used in a promotional spot (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCreativeName : @"Summer Sale",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCreativeName NS_SWIFT_NAME(AnalyticsParameterCreativeName) = + @"creative_name"; + +/// The name of a creative slot (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCreativeSlot : @"summer_banner2",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCreativeSlot NS_SWIFT_NAME(AnalyticsParameterCreativeSlot) = + @"creative_slot"; + +/// Currency of the purchase or items associated with the event, in 3-letter +/// ISO_4217 format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCurrency : @"USD",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCurrency NS_SWIFT_NAME(AnalyticsParameterCurrency) = + @"currency"; + +/// Flight or Travel destination (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterDestination : @"Mountain View, CA",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterDestination NS_SWIFT_NAME(AnalyticsParameterDestination) = + @"destination"; + +/// The arrival date, check-out date or rental end date for the item. This should be in +/// YYYY-MM-DD format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterEndDate : @"2015-09-14",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterEndDate NS_SWIFT_NAME(AnalyticsParameterEndDate) = @"end_date"; + +/// Flight number for travel events (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterFlightNumber : @"ZZ800",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterFlightNumber NS_SWIFT_NAME(AnalyticsParameterFlightNumber) = + @"flight_number"; + +/// Group/clan/guild ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterGroupID : @"g1",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterGroupID NS_SWIFT_NAME(AnalyticsParameterGroupID) = @"group_id"; + +/// The index of the item in a list (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterIndex : @(5),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterIndex NS_SWIFT_NAME(AnalyticsParameterIndex) = @"index"; + +/// Item brand (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemBrand : @"Google",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemBrand NS_SWIFT_NAME(AnalyticsParameterItemBrand) = + @"item_brand"; + +/// Item category (context-specific) (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemCategory : @"pants",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemCategory NS_SWIFT_NAME(AnalyticsParameterItemCategory) = + @"item_category"; + +/// Item ID (context-specific) (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemID : @"SKU_12345",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemID NS_SWIFT_NAME(AnalyticsParameterItemID) = @"item_id"; + +/// The Google Place ID (NSString) that +/// corresponds to the associated item. Alternatively, you can supply your own custom Location ID. +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemLocationID : @"ChIJiyj437sx3YAR9kUWC8QkLzQ",
+///       // ...
+///     };
+/// 
+/// This constant has been deprecated. Use @c kFIRParameterLocationID constant instead. +static NSString *const kFIRParameterItemLocationID + NS_SWIFT_NAME(AnalyticsParameterItemLocationID) = @"item_location_id"; + +/// Item Name (context-specific) (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemName : @"jeggings",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemName NS_SWIFT_NAME(AnalyticsParameterItemName) = + @"item_name"; + +/// The list in which the item was presented to the user (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemList : @"Search Results",
+///       // ...
+///     };
+/// 
+/// This constant has been deprecated. Use @c kFIRParameterItemListName constant instead. +static NSString *const kFIRParameterItemList NS_SWIFT_NAME(AnalyticsParameterItemList) = + @"item_list"; + +/// Item variant (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemVariant : @"Black",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemVariant NS_SWIFT_NAME(AnalyticsParameterItemVariant) = + @"item_variant"; + +/// Level in game (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterLevel : @(42),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLevel NS_SWIFT_NAME(AnalyticsParameterLevel) = @"level"; + +/// Location (NSString). The Google Place ID +/// that corresponds to the associated event. Alternatively, you can supply your own custom +/// Location ID. +///
+///     NSDictionary *params = @{
+///       kFIRParameterLocation : @"ChIJiyj437sx3YAR9kUWC8QkLzQ",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLocation NS_SWIFT_NAME(AnalyticsParameterLocation) = + @"location"; + +/// The advertising or marketing medium, for example: cpc, banner, email, push. Highly recommended +/// (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterMedium : @"email",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterMedium NS_SWIFT_NAME(AnalyticsParameterMedium) = @"medium"; + +/// Number of nights staying at hotel (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfNights : @(3),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfNights + NS_SWIFT_NAME(AnalyticsParameterNumberOfNights) = @"number_of_nights"; + +/// Number of passengers traveling (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfPassengers : @(11),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfPassengers + NS_SWIFT_NAME(AnalyticsParameterNumberOfPassengers) = @"number_of_passengers"; + +/// Number of rooms for travel events (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfRooms : @(2),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfRooms NS_SWIFT_NAME(AnalyticsParameterNumberOfRooms) = + @"number_of_rooms"; + +/// Flight or Travel origin (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterOrigin : @"Mountain View, CA",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterOrigin NS_SWIFT_NAME(AnalyticsParameterOrigin) = @"origin"; + +/// Purchase price (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterPrice : @(1.0),
+///       kFIRParameterCurrency : @"USD",  // e.g. $1.00 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterPrice NS_SWIFT_NAME(AnalyticsParameterPrice) = @"price"; + +/// Purchase quantity (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterQuantity : @(1),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterQuantity NS_SWIFT_NAME(AnalyticsParameterQuantity) = + @"quantity"; + +/// Score in game (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterScore : @(4200),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterScore NS_SWIFT_NAME(AnalyticsParameterScore) = @"score"; + +/// The search string/keywords used (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSearchTerm : @"periodic table",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterSearchTerm NS_SWIFT_NAME(AnalyticsParameterSearchTerm) = + @"search_term"; + +/// Shipping cost associated with a transaction (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterShipping : @(5.99),
+///       kFIRParameterCurrency : @"USD",  // e.g. $5.99 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterShipping NS_SWIFT_NAME(AnalyticsParameterShipping) = + @"shipping"; + +/// Sign up method (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSignUpMethod : @"google",
+///       // ...
+///     };
+/// 
+/// +/// This constant has been deprecated. Use Method constant instead. +static NSString *const kFIRParameterSignUpMethod NS_SWIFT_NAME(AnalyticsParameterSignUpMethod) = + @"sign_up_method"; + +/// A particular approach used in an operation; for example, "facebook" or "email" in the context +/// of a sign_up or login event. (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterMethod : @"google",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterMethod NS_SWIFT_NAME(AnalyticsParameterMethod) = @"method"; + +/// The origin of your traffic, such as an Ad network (for example, google) or partner (urban +/// airship). Identify the advertiser, site, publication, etc. that is sending traffic to your +/// property. Highly recommended (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSource : @"InMobi",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterSource NS_SWIFT_NAME(AnalyticsParameterSource) = @"source"; + +/// The departure date, check-in date or rental start date for the item. This should be in +/// YYYY-MM-DD format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterStartDate : @"2015-09-14",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterStartDate NS_SWIFT_NAME(AnalyticsParameterStartDate) = + @"start_date"; + +/// Tax cost associated with a transaction (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTax : @(2.43),
+///       kFIRParameterCurrency : @"USD",  // e.g. $2.43 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTax NS_SWIFT_NAME(AnalyticsParameterTax) = @"tax"; + +/// If you're manually tagging keyword campaigns, you should use utm_term to specify the keyword +/// (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTerm : @"game",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTerm NS_SWIFT_NAME(AnalyticsParameterTerm) = @"term"; + +/// The unique identifier of a transaction (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTransactionID : @"T12345",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTransactionID NS_SWIFT_NAME(AnalyticsParameterTransactionID) = + @"transaction_id"; + +/// Travel class (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTravelClass : @"business",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTravelClass NS_SWIFT_NAME(AnalyticsParameterTravelClass) = + @"travel_class"; + +/// A context-specific numeric value which is accumulated automatically for each event type. This is +/// a general purpose parameter that is useful for accumulating a key metric that pertains to an +/// event. Examples include revenue, distance, time and points. Value should be specified as signed +/// 64-bit integer or double as NSNumber. Notes: Values for pre-defined currency-related events +/// (such as @c kFIREventAddToCart) should be supplied using double as NSNumber and must be +/// accompanied by a @c kFIRParameterCurrency parameter. The valid range of accumulated values is +/// [-9,223,372,036,854.77, 9,223,372,036,854.77]. Supplying a non-numeric value, omitting the +/// corresponding @c kFIRParameterCurrency parameter, or supplying an invalid +/// currency code for conversion events will cause that +/// conversion to be omitted from reporting. +///
+///     NSDictionary *params = @{
+///       kFIRParameterValue : @(3.99),
+///       kFIRParameterCurrency : @"USD",  // e.g. $3.99 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterValue NS_SWIFT_NAME(AnalyticsParameterValue) = @"value"; + +/// Name of virtual currency type (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterVirtualCurrencyName : @"virtual_currency_name",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterVirtualCurrencyName + NS_SWIFT_NAME(AnalyticsParameterVirtualCurrencyName) = @"virtual_currency_name"; + +/// The name of a level in a game (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterLevelName : @"room_1",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLevelName NS_SWIFT_NAME(AnalyticsParameterLevelName) = + @"level_name"; + +/// The result of an operation. Specify 1 to indicate success and 0 to indicate failure (unsigned +/// integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSuccess : @(1),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterSuccess NS_SWIFT_NAME(AnalyticsParameterSuccess) = @"success"; + +/// Indicates that the associated event should either extend the current session +/// or start a new session if no session was active when the event was logged. +/// Specify YES to extend the current session or to start a new session; any +/// other value will not extend or start a session. +///
+///     NSDictionary *params = @{
+///       kFIRParameterExtendSession : @YES,
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterExtendSession NS_SWIFT_NAME(AnalyticsParameterExtendSession) = + @"extend_session"; + +/// Monetary value of discount associated with a purchase (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterDiscount : @(2.0),
+///       kFIRParameterCurrency : @"USD",  // e.g. $2.00 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterDiscount NS_SWIFT_NAME(AnalyticsParameterDiscount) = + @"discount"; + +/// Item Category (context-specific) (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemCategory2 : @"pants",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemCategory2 NS_SWIFT_NAME(AnalyticsParameterItemCategory2) = + @"item_category2"; + +/// Item Category (context-specific) (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemCategory3 : @"pants",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemCategory3 NS_SWIFT_NAME(AnalyticsParameterItemCategory3) = + @"item_category3"; + +/// Item Category (context-specific) (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemCategory4 : @"pants",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemCategory4 NS_SWIFT_NAME(AnalyticsParameterItemCategory4) = + @"item_category4"; + +/// Item Category (context-specific) (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemCategory5 : @"pants",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemCategory5 NS_SWIFT_NAME(AnalyticsParameterItemCategory5) = + @"item_category5"; + +/// The ID of the list in which the item was presented to the user (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemListID : @"ABC123",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemListID NS_SWIFT_NAME(AnalyticsParameterItemListID) = + @"item_list_id"; + +/// The name of the list in which the item was presented to the user (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemListName : @"Related products",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemListName NS_SWIFT_NAME(AnalyticsParameterItemListName) = + @"item_list_name"; + +/// The list of items involved in the transaction. (NSArray). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItems : @[
+///         @{kFIRParameterItemName : @"jeggings", kFIRParameterItemCategory : @"pants"},
+///         @{kFIRParameterItemName : @"boots", kFIRParameterItemCategory : @"shoes"},
+///       ],
+///     };
+/// 
+static NSString *const kFIRParameterItems NS_SWIFT_NAME(AnalyticsParameterItems) = @"items"; + +/// The location associated with the event. Preferred to be the Google +/// Place ID that corresponds to the +/// associated item but could be overridden to a custom location ID string.(NSString).
+///     NSDictionary *params = @{
+///       kFIRParameterLocationID : @"ChIJiyj437sx3YAR9kUWC8QkLzQ",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLocationID NS_SWIFT_NAME(AnalyticsParameterLocationID) = + @"location_id"; + +/// The chosen method of payment (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterPaymentType : @"Visa",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterPaymentType NS_SWIFT_NAME(AnalyticsParameterPaymentType) = + @"payment_type"; + +/// The ID of a product promotion (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterPromotionID : @"ABC123",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterPromotionID NS_SWIFT_NAME(AnalyticsParameterPromotionID) = + @"promotion_id"; + +/// The name of a product promotion (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterPromotionName : @"Summer Sale",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterPromotionName NS_SWIFT_NAME(AnalyticsParameterPromotionName) = + @"promotion_name"; + +/// The shipping tier (e.g. Ground, Air, Next-day) selected for delivery of the purchased item +/// (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterShippingTier : @"Ground",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterShippingTier NS_SWIFT_NAME(AnalyticsParameterShippingTier) = + @"shipping_tier"; diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h new file mode 100755 index 0000000..132aef7 --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h @@ -0,0 +1,29 @@ +/// @file FIRUserPropertyNames.h +/// +/// Predefined user property names. +/// +/// A UserProperty is an attribute that describes the app-user. By supplying UserProperties, you can +/// later analyze different behaviors of various segments of your userbase. You may supply up to 25 +/// unique UserProperties per app, and you can use the name and value of your choosing for each one. +/// UserProperty names can be up to 24 characters long, may only contain alphanumeric characters and +/// underscores ("_"), and must start with an alphabetic character. UserProperty values can be up to +/// 36 characters long. The "firebase_", "google_", and "ga_" prefixes are reserved and should not +/// be used. + +#import + +/// The method used to sign in. For example, "google", "facebook" or "twitter". +static NSString *const kFIRUserPropertySignUpMethod + NS_SWIFT_NAME(AnalyticsUserPropertySignUpMethod) = @"sign_up_method"; + +/// Indicates whether events logged by Google Analytics can be used to personalize ads for the user. +/// Set to "YES" to enable, or "NO" to disable. Default is enabled. See the +/// documentation for +/// more details and information about related settings. +/// +///
+///     [FIRAnalytics setUserPropertyString:@"NO"
+///                                 forName:kFIRUserPropertyAllowAdPersonalizationSignals];
+/// 
+static NSString *const kFIRUserPropertyAllowAdPersonalizationSignals + NS_SWIFT_NAME(AnalyticsUserPropertyAllowAdPersonalizationSignals) = @"allow_personalized_ads"; diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h new file mode 100755 index 0000000..ed7588a --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h @@ -0,0 +1,5 @@ +#import "FIRAnalytics+AppDelegate.h" +#import "FIRAnalytics.h" +#import "FIREventNames.h" +#import "FIRParameterNames.h" +#import "FIRUserPropertyNames.h" diff --git a/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Modules/module.modulemap b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Modules/module.modulemap new file mode 100755 index 0000000..d7c5905 --- /dev/null +++ b/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Modules/module.modulemap @@ -0,0 +1,12 @@ +framework module FirebaseAnalytics { + umbrella header "FirebaseAnalytics.h" + export * + module * { export * } + link "sqlite3" + link "z" + link framework "CoreData" + link framework "Security" + link framework "StoreKit" + link framework "SystemConfiguration" + link framework "UIKit" +} diff --git a/Pods/FirebaseAnalyticsInterop/LICENSE b/Pods/FirebaseAnalyticsInterop/LICENSE deleted file mode 100644 index d645695..0000000 --- a/Pods/FirebaseAnalyticsInterop/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/Pods/FirebaseAnalyticsInterop/README.md b/Pods/FirebaseAnalyticsInterop/README.md deleted file mode 100644 index 3ddc8fb..0000000 --- a/Pods/FirebaseAnalyticsInterop/README.md +++ /dev/null @@ -1,251 +0,0 @@ -# Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains a subset of the Firebase iOS SDK source. It currently -includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, -FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and -FirebaseStorage. - -The repository also includes GoogleUtilities source. The -[GoogleUtilities](GoogleUtilities/README.md) pod is -a set of utilities used by Firebase and other Google products. - -Firebase is an app development platform with tools to help you build, grow and -monetize your app. More information about Firebase can be found at -[https://firebase.google.com](https://firebase.google.com). - -## Installation - -See the three subsections for details about three different installation methods. -1. [Standard pod install](README.md#standard-pod-install) -1. [Installing from the GitHub repo](README.md#installing-from-github) -1. [Experimental Carthage](README.md#carthage-ios-only) - -### Standard pod install - -Go to -[https://firebase.google.com/docs/ios/setup](https://firebase.google.com/docs/ios/setup). - -### Installing from GitHub - -For releases starting with 5.0.0, the source for each release is also deployed -to CocoaPods master and available via standard -[CocoaPods Podfile syntax](https://guides.cocoapods.org/syntax/podfile.html#pod). - -These instructions can be used to access the Firebase repo at other branches, -tags, or commits. - -#### Background - -See -[the Podfile Syntax Reference](https://guides.cocoapods.org/syntax/podfile.html#pod) -for instructions and options about overriding pod source locations. - -#### Accessing Firebase Source Snapshots - -All of the official releases are tagged in this repo and available via CocoaPods. To access a local -source snapshot or unreleased branch, use Podfile directives like the following: - -To access FirebaseFirestore via a branch: -``` -pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' -pod 'FirebaseFirestore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' -``` - -To access FirebaseMessaging via a checked out version of the firebase-ios-sdk repo do: - -``` -pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk' -pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk' -``` - -### Carthage (iOS only) - -Instructions for the experimental Carthage distribution are at -[Carthage](Carthage.md). - -### Rome - -Instructions for installing binary frameworks via -[Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). - -## Development - -To develop Firebase software in this repository, ensure that you have at least -the following software: - - * Xcode 10.1 (or later) - * CocoaPods 1.7.2 (or later) - * [CocoaPods generate](https://github.com/square/cocoapods-generate) - -For the pod that you want to develop: - -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` - -Note: If the CocoaPods cache is out of date, you may need to run -`pod repo update` before the `pod gen` command. - -Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for -those platforms. Since 10.2, Xcode does not properly handle multi-platform -CocoaPods workspaces. - -Firestore has a self contained Xcode project. See -[Firestore/README.md](Firestore/README.md). - -### Development for Catalyst -* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` -* Check the Mac box in the App-iOS Build Settings -* Sign the App in the Settings Signing & Capabilities tab -* Click Pods in the Project Manager -* Add Signing to the iOS host app and unit test targets -* Select the Unit-unit scheme -* Run it to build and test - -### Adding a New Firebase Pod - -See [AddNewPod.md](AddNewPod.md). - -### Code Formatting - -To ensure that the code is formatted consistently, run the script -[./scripts/style.sh](https://github.com/firebase/firebase-ios-sdk/blob/master/scripts/style.sh) -before creating a PR. - -Travis will verify that any code changes are done in a style compliant way. Install -`clang-format` and `swiftformat`. -These commands will get the right versions: - -``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb -``` - -Note: if you already have a newer version of these installed you may need to -`brew switch` to this version. - -To update this section, find the versions of clang-format and swiftformat.rb to -match the versions in the CI failure logs -[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). - -### Running Unit Tests - -Select a scheme and press Command-u to build a component and run its unit tests. - -#### Viewing Code Coverage - -First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. - -After running the `AllUnitTests_iOS` scheme in Xcode, execute -`xcov --workspace Firebase.xcworkspace --scheme AllUnitTests_iOS --output_directory xcov_output` -at Example/ in the terminal. This will aggregate the coverage, and you can run `open xcov_output/index.html` to see the results. - -### Running Sample Apps -In order to run the sample apps and integration tests, you'll need valid -`GoogleService-Info.plist` files for those samples. The Firebase Xcode project contains dummy plist -files without real values, but can be replaced with real plist files. To get your own -`GoogleService-Info.plist` files: - -1. Go to the [Firebase Console](https://console.firebase.google.com/) -2. Create a new Firebase project, if you don't already have one -3. For each sample app you want to test, create a new Firebase app with the sample app's bundle -identifier (e.g. `com.google.Database-Example`) -4. Download the resulting `GoogleService-Info.plist` and replace the appropriate dummy plist file -(e.g. in [Example/Database/App/](Example/Database/App/)); - -Some sample apps like Firebase Messaging ([Example/Messaging/App](Example/Messaging/App)) require -special Apple capabilities, and you will have to change the sample app to use a unique bundle -identifier that you can control in your own Apple Developer account. - -## Specific Component Instructions -See the sections below for any special instructions for those components. - -### Firebase Auth - -If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about -building and running the FirebaseAuth pod along with various samples and tests. - -### Firebase Database - -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). - -### Firebase Storage - -To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). - -#### Push Notifications - -Push notifications can only be delivered to specially provisioned App IDs in the developer portal. -In order to actually test receiving push notifications, you will need to: - -1. Change the bundle identifier of the sample app to something you own in your Apple Developer -account, and enable that App ID for push notifications. -2. You'll also need to -[upload your APNs Provider Authentication Key or certificate to the Firebase Console](https://firebase.google.com/docs/cloud-messaging/ios/certs) -at **Project Settings > Cloud Messaging > [Your Firebase App]**. -3. Ensure your iOS device is added to your Apple Developer portal as a test device. - -#### iOS Simulator - -The iOS Simulator cannot register for remote notifications, and will not receive push notifications. -In order to receive push notifications, you'll have to follow the steps above and run the app on a -physical device. - -## Community Supported Efforts - -We've seen an amazing amount of interest and contributions to improve the Firebase SDKs, and we are -very grateful! We'd like to empower as many developers as we can to be able to use Firebase and -participate in the Firebase community. - -### tvOS, macOS, and Catalyst -Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, -FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. - -For tvOS, checkout the [Sample](Example/tvOSSample). - -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this -repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you -encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). - -To install, add a subset of the following to the Podfile: - -``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' -pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' -pod 'Firebase/Storage' -``` - -#### Additional Catalyst Notes - -* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` -to Build Settings. -* FirebaseFirestore requires signing the -[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). - -## Roadmap - -See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source -plans and directions. - -## Contributing - -See [Contributing](CONTRIBUTING.md) for more information on contributing to the Firebase -iOS SDK. - -## License - -The contents of this repository is licensed under the -[Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0). - -Your use of Firebase is governed by the -[Terms of Service for Firebase Services](https://firebase.google.com/terms/). diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h b/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.h similarity index 100% rename from Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h rename to Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.h diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m index 3a7d6de..07c786c 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m @@ -14,7 +14,7 @@ #import -#import "FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h" +#import "FirebaseCore/Sources/FIRAnalyticsConfiguration.h" #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-implementations" diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m index 8cfcdd6..4dfbfa8 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m @@ -22,14 +22,14 @@ #import #endif -#import +#import "FirebaseCore/Sources/Public/FIRApp.h" +#import "FirebaseCore/Sources/FIRAnalyticsConfiguration.h" #import "FirebaseCore/Sources/FIRBundleUtil.h" +#import "FirebaseCore/Sources/FIRComponentContainerInternal.h" +#import "FirebaseCore/Sources/FIRConfigurationInternal.h" #import "FirebaseCore/Sources/FIRVersion.h" -#import "FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h" #import "FirebaseCore/Sources/Private/FIRAppInternal.h" -#import "FirebaseCore/Sources/Private/FIRComponentContainerInternal.h" -#import "FirebaseCore/Sources/Private/FIRConfigurationInternal.h" #import "FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h" #import "FirebaseCore/Sources/Private/FIRLibrary.h" #import "FirebaseCore/Sources/Private/FIRLogger.h" @@ -78,6 +78,7 @@ NSString *const kFIRAppDiagnosticsFIRAppKey = @"FIRApp"; NSString *const kFIRAppDiagnosticsSDKNameKey = @"SDKName"; NSString *const kFIRAppDiagnosticsSDKVersionKey = @"SDKVersion"; +NSString *const kFIRAppDiagnosticsApplePlatformPrefix = @"apple-platform"; // Auth internal notification notification and key. NSString *const FIRAuthStateDidChangeInternalNotification = @@ -165,7 +166,7 @@ + (void)configureWithName:(NSString *)name options:(FIROptions *)options { if ([name isEqualToString:kFIRDefaultAppName]) { if (sDefaultApp) { - // The default app already exixts. Handle duplicate `configure` calls and return. + // The default app already exists. Handle duplicate `configure` calls and return. [self appWasConfiguredTwice:sDefaultApp usingOptions:options]; return; } @@ -579,6 +580,9 @@ + (NSString *)firebaseUserAgent { NSString *swiftFlagValue = [self hasSwiftRuntime] ? @"true" : @"false"; [FIRApp registerLibrary:@"swift" withVersion:swiftFlagValue]; + + [FIRApp registerLibrary:kFIRAppDiagnosticsApplePlatformPrefix + withVersion:[self applePlatform]]; }); NSMutableArray *libraries = @@ -606,6 +610,26 @@ + (BOOL)hasSwiftRuntime { return hasSwiftRuntime; } ++ (NSString *)applePlatform { + NSString *applePlatform = @"unknown"; + + // When a Catalyst app is run on macOS then both `TARGET_OS_MACCATALYST` and `TARGET_OS_IOS` are + // `true`, which means the condition list is order-sensitive. +#if TARGET_OS_MACCATALYST + applePlatform = @"maccatalyst"; +#elif TARGET_OS_IOS + applePlatform = @"ios"; +#elif TARGET_OS_TV + applePlatform = @"tvos"; +#elif TARGET_OS_OSX + applePlatform = @"macos"; +#elif TARGET_OS_WATCH + applePlatform = @"watchos"; +#endif + + return applePlatform; +} + - (void)checkExpectedBundleID { NSArray *bundles = [FIRBundleUtil relevantBundles]; NSString *expectedBundleID = [self expectedBundleID]; diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h b/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.h similarity index 100% rename from Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h rename to Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.h diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m index e4125cd..f3f812c 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h" +#import "FirebaseCore/Sources/FIRAppAssociationRegistration.h" #import diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m index b858f14..de2c295 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m @@ -49,15 +49,19 @@ + (NSArray *)relevantURLSchemes { + (BOOL)hasBundleIdentifierPrefix:(NSString *)bundleIdentifier inBundles:(NSArray *)bundles { for (NSBundle *bundle in bundles) { - // This allows app extensions that have the app's bundle as their prefix to pass this test. - NSString *applicationBundleIdentifier = - [GULAppEnvironmentUtil isAppExtension] - ? [self bundleIdentifierByRemovingLastPartFrom:bundle.bundleIdentifier] - : bundle.bundleIdentifier; - - if ([applicationBundleIdentifier isEqualToString:bundleIdentifier]) { + if ([bundle.bundleIdentifier isEqualToString:bundleIdentifier]) { return YES; } + + if ([GULAppEnvironmentUtil isAppExtension]) { + // A developer could be using the same `FIROptions` for both their app and extension. Since + // extensions have a suffix added to the bundleID, we consider a matching prefix as valid. + NSString *appBundleIDFromExtension = + [self bundleIdentifierByRemovingLastPartFrom:bundle.bundleIdentifier]; + if ([appBundleIDFromExtension isEqualToString:bundleIdentifier]) { + return YES; + } + } } return NO; } diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainerInternal.h b/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainerInternal.h similarity index 93% rename from Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainerInternal.h rename to Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainerInternal.h index bf39bc6..8235606 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainerInternal.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainerInternal.h @@ -15,8 +15,8 @@ */ #import -#import -#import +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainer.h" @class FIRApp; diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m index 6410f2e..9051336 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m @@ -16,7 +16,7 @@ #import "FirebaseCore/Sources/Private/FIRComponentType.h" -#import "FirebaseCore/Sources/Private/FIRComponentContainerInternal.h" +#import "FirebaseCore/Sources/FIRComponentContainerInternal.h" @implementation FIRComponentType diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m index a1c9f4a..83b3248 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "FirebaseCore/Sources/Private/FIRConfigurationInternal.h" +#import "FirebaseCore/Sources/FIRConfigurationInternal.h" -#import "FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h" +#import "FirebaseCore/Sources/FIRAnalyticsConfiguration.h" extern void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel); diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRConfigurationInternal.h b/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfigurationInternal.h similarity index 95% rename from Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRConfigurationInternal.h rename to Pods/FirebaseCore/FirebaseCore/Sources/FIRConfigurationInternal.h index 0d1a36f..ee16886 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRConfigurationInternal.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfigurationInternal.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#import +#import "FIRConfiguration.h" @class FIRAnalyticsConfiguration; diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m index 4981ca1..730dd6e 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m @@ -16,12 +16,12 @@ #import "FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h" -#import +#import "Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h" -#import +#import "FirebaseCore/Sources/Public/FIROptions.h" +#import "FirebaseCore/Sources/FIRDiagnosticsData.h" #import "FirebaseCore/Sources/Private/FIRAppInternal.h" -#import "FirebaseCore/Sources/Private/FIRDiagnosticsData.h" #import "FirebaseCore/Sources/Private/FIROptionsInternal.h" // Define the interop class symbol declared as an extern in FIRCoreDiagnosticsInterop. diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDiagnosticsData.h b/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.h similarity index 94% rename from Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDiagnosticsData.h rename to Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.h index ac5ef2c..5b5ff8a 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDiagnosticsData.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.h @@ -16,7 +16,7 @@ #import -#import +#import "Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m index bbe0561..da9489d 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m @@ -14,9 +14,9 @@ * limitations under the License. */ -#import "FirebaseCore/Sources/Private/FIRDiagnosticsData.h" +#import "FirebaseCore/Sources/FIRDiagnosticsData.h" -#import +#import "FirebaseCore/Sources/Public/FIRApp.h" #import "FirebaseCore/Sources/Private/FIRAppInternal.h" #import "FirebaseCore/Sources/Private/FIROptionsInternal.h" diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m b/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m index ba2ee1f..a749cbd 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m +++ b/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m @@ -14,9 +14,9 @@ #import "FirebaseCore/Sources/Private/FIRLogger.h" -#import #import #import +#import "FirebaseCore/Sources/Public/FIRLoggerLevel.h" #import "FirebaseCore/Sources/FIRVersion.h" diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h index ad1a186..9a0c943 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h @@ -14,8 +14,19 @@ * limitations under the License. */ +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRApp.h" +#else #import +#endif + +// The has_include is a workaround so the old IID needed for the FIS tests can find FIRErrors.h +#if __has_include("FirebaseCore/Sources/Private/FIRErrors.h") +#import "FirebaseCore/Sources/Private/FIRErrors.h" +#else #import +#endif @class FIRComponentContainer; @protocol FIRLibrary; diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h index 8dfab9c..db2bafe 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h @@ -15,8 +15,14 @@ */ #import +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponentType.h") +#import "FirebaseCore/Sources/Private/FIRComponentType.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#else #import #import +#endif NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrorCode.h b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrorCode.h index f77b3d0..c90d9ee 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrorCode.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrorCode.h @@ -32,7 +32,8 @@ typedef NS_ENUM(NSInteger, FIRErrorCode) { FIRErrorCodeInvalidAppID = -101, /** - * Error code for failing to configure a specific service. + * Error code for failing to configure a specific service. It's deprecated, but + * still used after copybara. */ FIRErrorCodeConfigFailed = -114, }; diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h index af9d968..e7a9e07 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h @@ -19,7 +19,12 @@ #import +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponent.h") +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#else #import +#endif @class FIRApp; diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h index 548e389..6fd7784 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h @@ -16,7 +16,12 @@ #import +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRLoggerLevel.h" +#else #import +#endif NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h index 0660a3c..acaf458 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h @@ -14,7 +14,12 @@ * limitations under the License. */ +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIROptions.h" +#else #import +#endif /** * Keys for the strings in the plist file. diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Private/FirebaseCoreInternal.h b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FirebaseCoreInternal.h new file mode 100644 index 0000000..93af6cb --- /dev/null +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Private/FirebaseCoreInternal.h @@ -0,0 +1,31 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// An umbrella header, for any other libraries in this repo to access Firebase Public and Private +// headers. Any package manager complexity should be handled here. + +#if SWIFT_PACKAGE +@import FirebaseCore; +#else +#import +#endif + +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainer.h" +#import "FirebaseCore/Sources/Private/FIRDependency.h" +#import "FirebaseCore/Sources/Private/FIRHeartbeatInfo.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h b/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h index e0dd6d6..f5578c6 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h @@ -47,15 +47,15 @@ NS_SWIFT_NAME(FirebaseApp) /** * Configures a default Firebase app. Raises an exception if any configuration step fails. The * default app is named "__FIRAPP_DEFAULT". This method should be called after the app is launched - * and before using Firebase services. This method is thread safe and contains synchronous file I/O - * (reading GoogleService-Info.plist from disk). + * and before using Firebase services. This method should be called from the main thread and + * contains synchronous file I/O (reading GoogleService-Info.plist from disk). */ + (void)configure; /** * Configures the default Firebase app with the provided options. The default app is named - * "__FIRAPP_DEFAULT". Raises an exception if any configuration step fails. This method is thread - * safe. + * "__FIRAPP_DEFAULT". Raises an exception if any configuration step fails. This method should be + * called from the main thread. * * @param options The Firebase application options used to configure the service. */ @@ -63,7 +63,7 @@ NS_SWIFT_NAME(FirebaseApp) /** * Configures a Firebase app with the given name and options. Raises an exception if any - * configuration step fails. This method is thread safe. + * configuration step fails. This method should be called from the main thread. * * @param name The application's name given by the developer. The name should should only contain Letters, Numbers and Underscore. diff --git a/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h b/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h index 8de3b07..2b8e678 100644 --- a/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h +++ b/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h @@ -16,7 +16,7 @@ #import -#import +#import "FIRLoggerLevel.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h b/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h similarity index 100% rename from Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h rename to Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h diff --git a/Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h b/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h similarity index 100% rename from Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h rename to Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h diff --git a/Pods/FirebaseCore/README.md b/Pods/FirebaseCore/README.md index ab36632..d778205 100644 --- a/Pods/FirebaseCore/README.md +++ b/Pods/FirebaseCore/README.md @@ -1,12 +1,29 @@ -# Firebase iOS Open Source Development - [![Actions Status][gh-core-badge]][gh-actions] - [![Actions Status][gh-dynamiclinks-badge]][gh-actions] - [![Actions Status][gh-datatransport-badge]][gh-actions] - [![Actions Status][gh-storage-badge]][gh-actions] - [![Actions Status][gh-zip-badge]][gh-actions] - [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains all Firebase iOS SDK source except FirebaseAnalytics, +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The @@ -72,12 +89,16 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least the following software: - * Xcode 10.1 (or later) + * Xcode 10.3 (or later) * CocoaPods 1.7.2 (or later) * [CocoaPods generate](https://github.com/square/cocoapods-generate) @@ -108,6 +129,10 @@ Firestore has a self contained Xcode project. See See [AddNewPod.md](AddNewPod.md). +### Managing Headers and Imports + +See [HeadersImports.md](HeadersImports.md). + ### Code Formatting To ensure that the code is formatted consistently, run the script @@ -119,8 +144,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -134,7 +159,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -165,18 +190,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -202,32 +235,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -257,8 +292,20 @@ Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). [gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg [gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg [gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg [gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg [gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg [gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m b/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m index defb38d..2db7db8 100644 --- a/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m +++ b/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m @@ -26,8 +26,8 @@ #import #import -#import -#import +#import "Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h" +#import "Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h" #import #import @@ -220,7 +220,7 @@ + (NSString *)deviceModel { #pragma mark - nanopb helper functions -/** Mallocs a pb_bytes_array and copies the given NSString's bytes into the bytes array. +/** Callocs a pb_bytes_array and copies the given NSString's bytes into the bytes array. * * @note Memory needs to be free manually, through pb_free or pb_release. * @param string The string to encode as pb_bytes. @@ -230,18 +230,18 @@ + (NSString *)deviceModel { return FIREncodeData(stringBytes); } -/** Mallocs a pb_bytes_array and copies the given NSData bytes into the bytes array. +/** Callocs a pb_bytes_array and copies the given NSData bytes into the bytes array. * * @note Memory needs to be free manually, through pb_free or pb_release. * @param data The data to copy into the new bytes array. */ pb_bytes_array_t *FIREncodeData(NSData *data) { - pb_bytes_array_t *pbBytes = malloc(PB_BYTES_ARRAY_T_ALLOCSIZE(data.length)); - if (pbBytes != NULL) { - memcpy(pbBytes->bytes, [data bytes], data.length); - pbBytes->size = (pb_size_t)data.length; + pb_bytes_array_t *pbBytesArray = calloc(1, PB_BYTES_ARRAY_T_ALLOCSIZE(data.length)); + if (pbBytesArray != NULL) { + [data getBytes:pbBytesArray->bytes length:data.length]; + pbBytesArray->size = (pb_size_t)data.length; } - return pbBytes; + return pbBytesArray; } /** Maps a service string to the representative nanopb enum. @@ -510,8 +510,8 @@ void FIRPopulateProtoWithInstalledServices(logs_proto_mobilesdk_ios_ICoreConfigu } logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType *servicesInstalled = - malloc(sizeof(logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType) * - sdkServiceInstalledArray.count); + calloc(sdkServiceInstalledArray.count, + sizeof(logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType)); if (servicesInstalled == NULL) { return; } diff --git a/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c b/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c index 4b2ac2f..0bdb27e 100644 --- a/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c +++ b/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.3.9.3 */ +/* Generated by nanopb-0.3.9.5 */ #include "firebasecore.nanopb.h" diff --git a/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h b/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h index 3e4c195..59d1b3b 100644 --- a/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h +++ b/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.3.9.3 */ +/* Generated by nanopb-0.3.9.5 */ #ifndef PB_LOGS_PROTO_MOBILESDK_IOS_FIREBASECORE_NANOPB_H_INCLUDED #define PB_LOGS_PROTO_MOBILESDK_IOS_FIREBASECORE_NANOPB_H_INCLUDED diff --git a/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h b/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h new file mode 100644 index 0000000..69c4072 --- /dev/null +++ b/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h @@ -0,0 +1,61 @@ +/* + * Copyright 2019 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** If present, is a BOOL wrapped in an NSNumber. */ +#define kFIRCDIsDataCollectionDefaultEnabledKey @"FIRCDIsDataCollectionDefaultEnabledKey" + +/** If present, is an int32_t wrapped in an NSNumber. */ +#define kFIRCDConfigurationTypeKey @"FIRCDConfigurationTypeKey" + +/** If present, is an NSString. */ +#define kFIRCDSdkNameKey @"FIRCDSdkNameKey" + +/** If present, is an NSString. */ +#define kFIRCDSdkVersionKey @"FIRCDSdkVersionKey" + +/** If present, is an int32_t wrapped in an NSNumber. */ +#define kFIRCDllAppsCountKey @"FIRCDllAppsCountKey" + +/** If present, is an NSString. */ +#define kFIRCDGoogleAppIDKey @"FIRCDGoogleAppIDKey" + +/** If present, is an NSString. */ +#define kFIRCDBundleIDKey @"FIRCDBundleID" + +/** If present, is a BOOL wrapped in an NSNumber. */ +#define kFIRCDUsingOptionsFromDefaultPlistKey @"FIRCDUsingOptionsFromDefaultPlistKey" + +/** If present, is an NSString. */ +#define kFIRCDLibraryVersionIDKey @"FIRCDLibraryVersionIDKey" + +/** If present, is an NSString. */ +#define kFIRCDFirebaseUserAgentKey @"FIRCDFirebaseUserAgentKey" + +/** Defines the interface of a data object needed to log diagnostics data. */ +@protocol FIRCoreDiagnosticsData + +@required + +/** A dictionary containing data (non-exhaustive) to be logged in diagnostics. */ +@property(nonatomic) NSDictionary *diagnosticObjects; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h b/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h similarity index 59% rename from Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h rename to Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h index 4d73ec0..2b0eb71 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h +++ b/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h @@ -16,19 +16,18 @@ #import -NS_ASSUME_NONNULL_BEGIN - -/// Helper functions to access Keychain. -@interface FIRInstallationsKeychainUtils : NSObject +#import "FIRCoreDiagnosticsData.h" -+ (nullable NSData *)getItemWithQuery:(NSDictionary *)query - error:(NSError *_Nullable *_Nullable)outError; +NS_ASSUME_NONNULL_BEGIN -+ (BOOL)setItem:(NSData *)item - withQuery:(NSDictionary *)query - error:(NSError *_Nullable *_Nullable)outError; +/** Allows the interoperation of FirebaseCore and FirebaseCoreDiagnostics. */ +@protocol FIRCoreDiagnosticsInterop -+ (BOOL)removeItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nullable)outError; +/** Sends the given diagnostics data. + * + * @param diagnosticsData The diagnostics data object to send. + */ ++ (void)sendDiagnosticsData:(id)diagnosticsData; @end diff --git a/Pods/FirebaseCoreDiagnostics/README.md b/Pods/FirebaseCoreDiagnostics/README.md index ab36632..d778205 100644 --- a/Pods/FirebaseCoreDiagnostics/README.md +++ b/Pods/FirebaseCoreDiagnostics/README.md @@ -1,12 +1,29 @@ -# Firebase iOS Open Source Development - [![Actions Status][gh-core-badge]][gh-actions] - [![Actions Status][gh-dynamiclinks-badge]][gh-actions] - [![Actions Status][gh-datatransport-badge]][gh-actions] - [![Actions Status][gh-storage-badge]][gh-actions] - [![Actions Status][gh-zip-badge]][gh-actions] - [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains all Firebase iOS SDK source except FirebaseAnalytics, +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The @@ -72,12 +89,16 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least the following software: - * Xcode 10.1 (or later) + * Xcode 10.3 (or later) * CocoaPods 1.7.2 (or later) * [CocoaPods generate](https://github.com/square/cocoapods-generate) @@ -108,6 +129,10 @@ Firestore has a self contained Xcode project. See See [AddNewPod.md](AddNewPod.md). +### Managing Headers and Imports + +See [HeadersImports.md](HeadersImports.md). + ### Code Formatting To ensure that the code is formatted consistently, run the script @@ -119,8 +144,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -134,7 +159,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -165,18 +190,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -202,32 +235,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -257,8 +292,20 @@ Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). [gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg [gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg [gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg [gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg [gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg [gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/FirebaseCoreDiagnosticsInterop/LICENSE b/Pods/FirebaseCoreDiagnosticsInterop/LICENSE deleted file mode 100644 index d645695..0000000 --- a/Pods/FirebaseCoreDiagnosticsInterop/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/Pods/FirebaseCoreDiagnosticsInterop/README.md b/Pods/FirebaseCoreDiagnosticsInterop/README.md deleted file mode 100644 index 3ddc8fb..0000000 --- a/Pods/FirebaseCoreDiagnosticsInterop/README.md +++ /dev/null @@ -1,251 +0,0 @@ -# Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains a subset of the Firebase iOS SDK source. It currently -includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, -FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and -FirebaseStorage. - -The repository also includes GoogleUtilities source. The -[GoogleUtilities](GoogleUtilities/README.md) pod is -a set of utilities used by Firebase and other Google products. - -Firebase is an app development platform with tools to help you build, grow and -monetize your app. More information about Firebase can be found at -[https://firebase.google.com](https://firebase.google.com). - -## Installation - -See the three subsections for details about three different installation methods. -1. [Standard pod install](README.md#standard-pod-install) -1. [Installing from the GitHub repo](README.md#installing-from-github) -1. [Experimental Carthage](README.md#carthage-ios-only) - -### Standard pod install - -Go to -[https://firebase.google.com/docs/ios/setup](https://firebase.google.com/docs/ios/setup). - -### Installing from GitHub - -For releases starting with 5.0.0, the source for each release is also deployed -to CocoaPods master and available via standard -[CocoaPods Podfile syntax](https://guides.cocoapods.org/syntax/podfile.html#pod). - -These instructions can be used to access the Firebase repo at other branches, -tags, or commits. - -#### Background - -See -[the Podfile Syntax Reference](https://guides.cocoapods.org/syntax/podfile.html#pod) -for instructions and options about overriding pod source locations. - -#### Accessing Firebase Source Snapshots - -All of the official releases are tagged in this repo and available via CocoaPods. To access a local -source snapshot or unreleased branch, use Podfile directives like the following: - -To access FirebaseFirestore via a branch: -``` -pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' -pod 'FirebaseFirestore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' -``` - -To access FirebaseMessaging via a checked out version of the firebase-ios-sdk repo do: - -``` -pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk' -pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk' -``` - -### Carthage (iOS only) - -Instructions for the experimental Carthage distribution are at -[Carthage](Carthage.md). - -### Rome - -Instructions for installing binary frameworks via -[Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). - -## Development - -To develop Firebase software in this repository, ensure that you have at least -the following software: - - * Xcode 10.1 (or later) - * CocoaPods 1.7.2 (or later) - * [CocoaPods generate](https://github.com/square/cocoapods-generate) - -For the pod that you want to develop: - -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` - -Note: If the CocoaPods cache is out of date, you may need to run -`pod repo update` before the `pod gen` command. - -Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for -those platforms. Since 10.2, Xcode does not properly handle multi-platform -CocoaPods workspaces. - -Firestore has a self contained Xcode project. See -[Firestore/README.md](Firestore/README.md). - -### Development for Catalyst -* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` -* Check the Mac box in the App-iOS Build Settings -* Sign the App in the Settings Signing & Capabilities tab -* Click Pods in the Project Manager -* Add Signing to the iOS host app and unit test targets -* Select the Unit-unit scheme -* Run it to build and test - -### Adding a New Firebase Pod - -See [AddNewPod.md](AddNewPod.md). - -### Code Formatting - -To ensure that the code is formatted consistently, run the script -[./scripts/style.sh](https://github.com/firebase/firebase-ios-sdk/blob/master/scripts/style.sh) -before creating a PR. - -Travis will verify that any code changes are done in a style compliant way. Install -`clang-format` and `swiftformat`. -These commands will get the right versions: - -``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb -``` - -Note: if you already have a newer version of these installed you may need to -`brew switch` to this version. - -To update this section, find the versions of clang-format and swiftformat.rb to -match the versions in the CI failure logs -[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). - -### Running Unit Tests - -Select a scheme and press Command-u to build a component and run its unit tests. - -#### Viewing Code Coverage - -First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. - -After running the `AllUnitTests_iOS` scheme in Xcode, execute -`xcov --workspace Firebase.xcworkspace --scheme AllUnitTests_iOS --output_directory xcov_output` -at Example/ in the terminal. This will aggregate the coverage, and you can run `open xcov_output/index.html` to see the results. - -### Running Sample Apps -In order to run the sample apps and integration tests, you'll need valid -`GoogleService-Info.plist` files for those samples. The Firebase Xcode project contains dummy plist -files without real values, but can be replaced with real plist files. To get your own -`GoogleService-Info.plist` files: - -1. Go to the [Firebase Console](https://console.firebase.google.com/) -2. Create a new Firebase project, if you don't already have one -3. For each sample app you want to test, create a new Firebase app with the sample app's bundle -identifier (e.g. `com.google.Database-Example`) -4. Download the resulting `GoogleService-Info.plist` and replace the appropriate dummy plist file -(e.g. in [Example/Database/App/](Example/Database/App/)); - -Some sample apps like Firebase Messaging ([Example/Messaging/App](Example/Messaging/App)) require -special Apple capabilities, and you will have to change the sample app to use a unique bundle -identifier that you can control in your own Apple Developer account. - -## Specific Component Instructions -See the sections below for any special instructions for those components. - -### Firebase Auth - -If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about -building and running the FirebaseAuth pod along with various samples and tests. - -### Firebase Database - -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). - -### Firebase Storage - -To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). - -#### Push Notifications - -Push notifications can only be delivered to specially provisioned App IDs in the developer portal. -In order to actually test receiving push notifications, you will need to: - -1. Change the bundle identifier of the sample app to something you own in your Apple Developer -account, and enable that App ID for push notifications. -2. You'll also need to -[upload your APNs Provider Authentication Key or certificate to the Firebase Console](https://firebase.google.com/docs/cloud-messaging/ios/certs) -at **Project Settings > Cloud Messaging > [Your Firebase App]**. -3. Ensure your iOS device is added to your Apple Developer portal as a test device. - -#### iOS Simulator - -The iOS Simulator cannot register for remote notifications, and will not receive push notifications. -In order to receive push notifications, you'll have to follow the steps above and run the app on a -physical device. - -## Community Supported Efforts - -We've seen an amazing amount of interest and contributions to improve the Firebase SDKs, and we are -very grateful! We'd like to empower as many developers as we can to be able to use Firebase and -participate in the Firebase community. - -### tvOS, macOS, and Catalyst -Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, -FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. - -For tvOS, checkout the [Sample](Example/tvOSSample). - -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this -repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you -encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). - -To install, add a subset of the following to the Podfile: - -``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' -pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' -pod 'Firebase/Storage' -``` - -#### Additional Catalyst Notes - -* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` -to Build Settings. -* FirebaseFirestore requires signing the -[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). - -## Roadmap - -See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source -plans and directions. - -## Contributing - -See [Contributing](CONTRIBUTING.md) for more information on contributing to the Firebase -iOS SDK. - -## License - -The contents of this repository is licensed under the -[Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0). - -Your use of Firebase is governed by the -[Terms of Service for Firebase Services](https://firebase.google.com/terms/). diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.h index 75929df..f3c0bd7 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.h @@ -14,13 +14,13 @@ #pragma once +#include +#include + #include "FIRCLSFeatures.h" #include "FIRCLSFile.h" #include "FIRCLSMachO.h" -#include -#include - __BEGIN_DECLS // Typically, apps seem to have ~300 binary images loaded diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.h index f365608..bdb4341 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.h @@ -33,6 +33,13 @@ __BEGIN_DECLS +#ifdef __OBJC__ +@class FIRCLSInternalReport; +@class FIRCLSSettings; +@class FIRCLSInstallIdentifierModel; +@class FIRCLSFileManager; +#endif + typedef struct { volatile bool initialized; volatile bool debuggerAttached; @@ -90,10 +97,18 @@ typedef struct { uint32_t maxKeyValues; } FIRCLSContextInitData; -bool FIRCLSContextInitialize(const FIRCLSContextInitData* initData); +#ifdef __OBJC__ +bool FIRCLSContextInitialize(FIRCLSInternalReport* report, + FIRCLSSettings* settings, + FIRCLSInstallIdentifierModel* installIDModel, + FIRCLSFileManager* fileManager); // Re-writes the metadata file on the current thread -void FIRCLSContextUpdateMetadata(const FIRCLSContextInitData* initData); +void FIRCLSContextUpdateMetadata(FIRCLSInternalReport* report, + FIRCLSSettings* settings, + FIRCLSInstallIdentifierModel* installIDModel, + FIRCLSFileManager* fileManager); +#endif void FIRCLSContextBaseInit(void); void FIRCLSContextBaseDeinit(void); diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.m index adbc05b..26d46c7 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.m @@ -17,12 +17,16 @@ #include #include +#import "FIRCLSFileManager.h" +#import "FIRCLSInstallIdentifierModel.h" +#import "FIRCLSInternalReport.h" +#import "FIRCLSSettings.h" + #include "FIRCLSApplication.h" #include "FIRCLSCrashedMarkerFile.h" #include "FIRCLSDefines.h" #include "FIRCLSFeatures.h" #include "FIRCLSGlobals.h" -#include "FIRCLSInternalReport.h" #include "FIRCLSProcess.h" #include "FIRCLSUtility.h" @@ -45,7 +49,61 @@ static const char* FIRCLSContextAppendToRoot(NSString* root, NSString* component); static void FIRCLSContextAllocate(FIRCLSContext* context); -bool FIRCLSContextInitialize(const FIRCLSContextInitData* initData) { +FIRCLSContextInitData FIRCLSContextBuildInitData(FIRCLSInternalReport* report, + FIRCLSSettings* settings, + FIRCLSInstallIdentifierModel* installIDModel, + FIRCLSFileManager* fileManager) { + // Because we need to start the crash reporter right away, + // it starts up either with default settings, or cached settings + // from the last time they were fetched + + FIRCLSContextInitData initData; + + memset(&initData, 0, sizeof(FIRCLSContextInitData)); + + initData.customBundleId = nil; + initData.installId = [installIDModel.installID UTF8String]; + initData.sessionId = [[report identifier] UTF8String]; + initData.rootPath = [[report path] UTF8String]; + initData.previouslyCrashedFileRootPath = [[fileManager rootPath] UTF8String]; + initData.errorsEnabled = [settings errorReportingEnabled]; + initData.customExceptionsEnabled = [settings customExceptionsEnabled]; + initData.maxCustomExceptions = [settings maxCustomExceptions]; + initData.maxErrorLogSize = [settings errorLogBufferSize]; + initData.maxLogSize = [settings logBufferSize]; + initData.maxKeyValues = [settings maxCustomKeys]; + + // If this is set, then we could attempt to do a synchronous submission for certain kinds of + // events (exceptions). This is a very cool feature, but adds complexity to the backend. For now, + // we're going to leave this disabled. It does work in the exception case, but will ultimtely + // result in the following crash to be discared. Usually that crash isn't interesting. But, if it + // was, we'd never have a chance to see it. + initData.delegate = nil; + +#if CLS_MACH_EXCEPTION_SUPPORTED + __block exception_mask_t mask = 0; + + // TODO(b/141241224) This if statement was hardcoded to no, so this block was never run + // FIRCLSSignalEnumerateHandledSignals(^(int idx, int signal) { + // if ([self.delegate ensureDeliveryOfUnixSignal:signal]) { + // mask |= FIRCLSMachExceptionMaskForSignal(signal); + // } + // }); + + initData.machExceptionMask = mask; +#endif + + return initData; +} + +bool FIRCLSContextInitialize(FIRCLSInternalReport* report, + FIRCLSSettings* settings, + FIRCLSInstallIdentifierModel* installIDModel, + FIRCLSFileManager* fileManager) { + FIRCLSContextInitData initDataObj = + FIRCLSContextBuildInitData(report, settings, installIDModel, fileManager); + FIRCLSContextInitData* initData = &initDataObj; + if (!initData) { return false; } @@ -92,9 +150,9 @@ bool FIRCLSContextInitialize(const FIRCLSContextInitData* initData) { _firclsContext.readonly->logging.logStorage.restrictBySize = true; _firclsContext.readonly->logging.logStorage.entryCount = NULL; _firclsContext.readonly->logging.logStorage.aPath = - FIRCLSContextAppendToRoot(rootPath, @"log_a.clsrecord"); + FIRCLSContextAppendToRoot(rootPath, FIRCLSReportLogAFile); _firclsContext.readonly->logging.logStorage.bPath = - FIRCLSContextAppendToRoot(rootPath, @"log_b.clsrecord"); + FIRCLSContextAppendToRoot(rootPath, FIRCLSReportLogBFile); _firclsContext.readonly->logging.customExceptionStorage.aPath = FIRCLSContextAppendToRoot(rootPath, FIRCLSReportCustomExceptionAFile); _firclsContext.readonly->logging.customExceptionStorage.bPath = @@ -197,7 +255,14 @@ bool FIRCLSContextInitialize(const FIRCLSContextInitData* initData) { return true; } -void FIRCLSContextUpdateMetadata(const FIRCLSContextInitData* initData) { +void FIRCLSContextUpdateMetadata(FIRCLSInternalReport* report, + FIRCLSSettings* settings, + FIRCLSInstallIdentifierModel* installIDModel, + FIRCLSFileManager* fileManager) { + FIRCLSContextInitData initDataObj = + FIRCLSContextBuildInitData(report, settings, installIDModel, fileManager); + FIRCLSContextInitData* initData = &initDataObj; + NSString* rootPath = [NSString stringWithUTF8String:initData->rootPath]; const char* metaDataPath = diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSHost.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSHost.h index 31dfc24..24b1acd 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSHost.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSHost.h @@ -14,11 +14,11 @@ #pragma once -#include "FIRCLSFile.h" - #include #include +#include "FIRCLSFile.h" + typedef struct { const char* documentDirectoryPath; vm_size_t pageSize; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSProcess.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSProcess.h index c12fd73..dbe758f 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSProcess.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSProcess.h @@ -14,11 +14,11 @@ #pragma once -#include "FIRCLSFile.h" - #include #include +#include "FIRCLSFile.h" + typedef struct { // task info mach_port_t task; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.h index 6673748..02b7031 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.h @@ -14,6 +14,7 @@ #import +#include "FIRCLSApplicationIdentifierModel.h" #include "FIRCLSProfiling.h" #include "FIRCrashlytics.h" @@ -25,17 +26,20 @@ NS_ASSUME_NONNULL_BEGIN @class FIRCLSFileManager; @class FIRCLSInternalReport; @class FIRCLSSettings; -@class FIRInstanceID; +@class GDTCORTransport; +@class FIRInstallations; @protocol FIRAnalyticsInterop; @interface FIRCLSReportManager : NSObject - (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager - instanceID:(FIRInstanceID *)instanceID + installations:(FIRInstallations *)installations analytics:(nullable id)analytics googleAppID:(NSString *)googleAppID dataArbiter:(FIRCLSDataCollectionArbiter *)dataArbiter - NS_DESIGNATED_INITIALIZER; + googleTransport:(GDTCORTransport *)googleTransport + appIDModel:(FIRCLSApplicationIdentifierModel *)appIDModel + settings:(FIRCLSSettings *)settings NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.m index 8132570..cf04b3f 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.m @@ -12,6 +12,24 @@ // See the License for the specific language governing permissions and // limitations under the License. +// +// The report manager has the ability to send to two different endpoints. +// +// The old legacy flow for a report goes through the following states/folders: +// 1. active - .clsrecords optimized for crash time persistence +// 2. processing - .clsrecords with attempted symbolication +// 3. prepared-legacy - .multipartmime of compressed .clsrecords +// +// The new flow for a report goes through the following states/folders: +// 1. active - .clsrecords optimized for crash time persistence +// 2. processing - .clsrecords with attempted symbolication +// 3. prepared - .clsrecords moved from processing with no changes +// +// The code was designed so the report processing workflows are not dramatically different from one +// another. The design will help avoid having a lot of conditional code blocks throughout the +// codebase. +// + #include #if __has_include() @@ -39,7 +57,6 @@ #include "FIRCLSGlobals.h" #include "FIRCLSUtility.h" -#import "FIRCLSApplicationIdentifierModel.h" #import "FIRCLSConstants.h" #import "FIRCLSExecutionIdentifierModel.h" #import "FIRCLSInstallIdentifierModel.h" @@ -47,8 +64,9 @@ #import "FIRCLSReportManager_Private.h" -#include -#include +#import "Interop/Analytics/Public/FIRAnalyticsInterop.h" +#import "Interop/Analytics/Public/FIRAnalyticsInteropListener.h" + #include "FIRAEvent+Internal.h" #include "FIRCLSFCRAnalytics.h" @@ -156,6 +174,8 @@ @interface FIRCLSReportManager () )analytics googleAppID:(NSString *)googleAppID - dataArbiter:(FIRCLSDataCollectionArbiter *)dataArbiter { + dataArbiter:(FIRCLSDataCollectionArbiter *)dataArbiter + googleTransport:(GDTCORTransport *)googleTransport + appIDModel:(FIRCLSApplicationIdentifierModel *)appIDModel + settings:(FIRCLSSettings *)settings { self = [super init]; if (!self) { return nil; @@ -178,6 +201,8 @@ - (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager _googleAppID = [googleAppID copy]; _dataArbiter = dataArbiter; + _googleTransport = googleTransport; + NSString *sdkBundleID = FIRCLSApplicationGetSDKBundleID(); _operationQueue = [NSOperationQueue new]; @@ -195,14 +220,14 @@ - (instancetype)initWithFileManager:(FIRCLSFileManager *)fileManager _checkForUnsentReportsCalled = NO; - _appIDModel = [[FIRCLSApplicationIdentifierModel alloc] init]; - _installIDModel = [[FIRCLSInstallIdentifierModel alloc] initWithInstanceID:instanceID]; + _installIDModel = [[FIRCLSInstallIdentifierModel alloc] initWithInstallations:installations]; _executionIDModel = [[FIRCLSExecutionIdentifierModel alloc] init]; - _settings = [[FIRCLSSettings alloc] initWithFileManager:_fileManager appIDModel:_appIDModel]; + _settings = settings; + _appIDModel = appIDModel; _settingsAndOnboardingManager = - [[FIRCLSSettingsOnboardingManager alloc] initWithAppIDModel:self.appIDModel + [[FIRCLSSettingsOnboardingManager alloc] initWithAppIDModel:appIDModel installIDModel:self.installIDModel settings:self.settings fileManager:self.fileManager @@ -220,8 +245,14 @@ - (FIRCLSNetworkClient *)clientWithOperationQueue:(NSOperationQueue *)queue { */ - (int)unsentReportsCountWithPreexisting:(NSArray *)paths { int count = [self countSubmittableAndDeleteUnsubmittableReportPaths:paths]; + count += _fileManager.processingPathContents.count; - count += _fileManager.preparedPathContents.count; + + if (self.settings.shouldUseNewReportEndpoint) { + count += _fileManager.preparedPathContents.count; + } else { + count += _fileManager.legacyPreparedPathContents.count; + } return count; } @@ -275,7 +306,7 @@ - (FBLPromise *)deleteUnsentReports { NSTimeInterval currentTimestamp = [NSDate timeIntervalSinceReferenceDate]; [self.settings reloadFromCacheWithGoogleAppID:self.googleAppID currentTimestamp:currentTimestamp]; - if (![self checkBundleIDExists]) { + if (![self validateAppIdentifiers]) { return [FBLPromise resolvedWith:@NO]; } @@ -296,12 +327,6 @@ - (FBLPromise *)deleteUnsentReports { return [FBLPromise resolvedWith:@NO]; } - if (![self.settings crashReportingEnabled]) { - FIRCLSInfoLog(@"Reporting is disabled"); - [_fileManager removeContentsOfAllPaths]; - return [FBLPromise resolvedWith:@NO]; - } - if (![_fileManager createReportDirectories]) { return [FBLPromise resolvedWith:@NO]; } @@ -334,10 +359,13 @@ - (FBLPromise *)deleteUnsentReports { FIRCLSDebugLog(@"Automatic data collection is enabled."); FIRCLSDebugLog(@"Unsent reports will be uploaded at startup"); FIRCLSDataCollectionToken *dataCollectionToken = [FIRCLSDataCollectionToken validToken]; - [self startNetworkRequestsWithToken:dataCollectionToken - preexistingReportPaths:preexistingReportPaths - blockingSend:launchFailure - report:report]; + + [self beginSettingsAndOnboardingWithToken:dataCollectionToken waitForSettingsRequest:NO]; + + [self beginReportUploadsWithToken:dataCollectionToken + preexistingReportPaths:preexistingReportPaths + blockingSend:launchFailure + report:report]; // If data collection is enabled, the SDK will not notify the user // when unsent reports are available, or respect Send / DeleteUnsentReports @@ -364,15 +392,23 @@ - (FBLPromise *)deleteUnsentReports { FIRCLSDebugLog(@"Sending unsent reports."); FIRCLSDataCollectionToken *dataCollectionToken = [FIRCLSDataCollectionToken validToken]; - [self startNetworkRequestsWithToken:dataCollectionToken - preexistingReportPaths:preexistingReportPaths - blockingSend:NO - report:report]; + + // For the new report endpoint, the orgID is not needed. + // For the legacy report endpoint, wait on settings if orgID is not available. + BOOL waitForSetting = + !self.settings.shouldUseNewReportEndpoint && !self.settings.orgID; + + [self beginSettingsAndOnboardingWithToken:dataCollectionToken + waitForSettingsRequest:waitForSetting]; + + [self beginReportUploadsWithToken:dataCollectionToken + preexistingReportPaths:preexistingReportPaths + blockingSend:NO + report:report]; } else if (action == FIRCLSReportActionDelete) { FIRCLSDebugLog(@"Deleting unsent reports."); - [self removeExistingReportPaths:preexistingReportPaths]; - [self removeContentsInOtherReportingDirectories]; + [self deleteUnsentReportsWithPreexisting:preexistingReportPaths]; } else { FIRCLSErrorLog(@"Unknown report action: %d", action); } @@ -414,58 +450,38 @@ - (void)checkAndRotateInstallUUIDIfNeededWithReport:(FIRCLSInternalReport *)repo return; } - FIRCLSContextInitData initData = [self initializeContextInitData:report]; - - FIRCLSContextUpdateMetadata(&initData); + FIRCLSContextUpdateMetadata(report, self.settings, self.installIDModel, self->_fileManager); }]; } -- (void)startNetworkRequestsWithToken:(FIRCLSDataCollectionToken *)token - preexistingReportPaths:(NSArray *)preexistingReportPaths - blockingSend:(BOOL)blockingSend - report:(FIRCLSInternalReport *)report { +- (void)beginSettingsAndOnboardingWithToken:(FIRCLSDataCollectionToken *)token + waitForSettingsRequest:(BOOL)waitForSettings { if (self.settings.isCacheExpired) { // This method can be called more than once if the user calls // SendUnsentReports again, so don't repeat the settings fetch static dispatch_once_t settingsFetchOnceToken; dispatch_once(&settingsFetchOnceToken, ^{ [self.settingsAndOnboardingManager beginSettingsAndOnboardingWithGoogleAppId:self.googleAppID - token:token]; + token:token + waitForCompletion:waitForSettings]; }); } - - [self processExistingReportPaths:preexistingReportPaths - dataCollectionToken:token - asUrgent:blockingSend]; - [self handleContentsInOtherReportingDirectoriesWithToken:token]; } -- (FIRCLSContextInitData)initializeContextInitData:(FIRCLSInternalReport *)report { - FIRCLSContextInitData initData; +- (void)beginReportUploadsWithToken:(FIRCLSDataCollectionToken *)token + preexistingReportPaths:(NSArray *)preexistingReportPaths + blockingSend:(BOOL)blockingSend + report:(FIRCLSInternalReport *)report { + if (self.settings.collectReportsEnabled) { + [self processExistingReportPaths:preexistingReportPaths + dataCollectionToken:token + asUrgent:blockingSend]; + [self handleContentsInOtherReportingDirectoriesWithToken:token]; - memset(&initData, 0, sizeof(FIRCLSContextInitData)); - - // Because we need to start the crash reporter right away, - // it starts up either with default settings, or cached settings - // from the last time they were fetched - FIRCLSSettings *settings = self.settings; - - initData.customBundleId = NULL; - initData.installId = [self.installIDModel.installID UTF8String]; - initData.sessionId = [[report identifier] UTF8String]; - initData.rootPath = [[report path] UTF8String]; - initData.previouslyCrashedFileRootPath = [[_fileManager rootPath] UTF8String]; -#if CLS_MACH_EXCEPTION_SUPPORTED - initData.machExceptionMask = [self machExceptionMask]; -#endif - initData.errorsEnabled = [settings errorReportingEnabled]; - initData.customExceptionsEnabled = [settings customExceptionsEnabled]; - initData.maxCustomExceptions = [settings maxCustomExceptions]; - initData.maxErrorLogSize = [settings errorLogBufferSize]; - initData.maxLogSize = [settings logBufferSize]; - initData.maxKeyValues = [settings maxCustomKeys]; - - return initData; + } else { + FIRCLSInfoLog(@"Collect crash reports is disabled"); + [self deleteUnsentReportsWithPreexisting:preexistingReportPaths]; + } } - (BOOL)startCrashReporterWithProfilingMark:(FIRCLSProfileMark)mark @@ -474,19 +490,12 @@ - (BOOL)startCrashReporterWithProfilingMark:(FIRCLSProfileMark)mark return NO; } - FIRCLSContextInitData initData = [self initializeContextInitData:report]; - - // If this is set, then we could attempt to do a synchronous submission for certain kinds of - // events (exceptions). This is a very cool feature, but adds complexity to the backend. For now, - // we're going to leave this disabled. It does work in the exception case, but will ultimtely - // result in the following crash to be discared. Usually that crash isn't interesting. But, if it - // was, we'd never have a chance to see it. - initData.delegate = NULL; - - if (![self installCrashReportingHandlers:&initData]) { + if (!FIRCLSContextInitialize(report, self.settings, self.installIDModel, _fileManager)) { return NO; } + [self setupStateNotifications]; + [self registerAnalyticsEventListener]; [self crashReportingSetupCompleted:mark]; @@ -514,7 +523,20 @@ - (void)crashReportingSetupCompleted:(FIRCLSProfileMark)mark { }); } -- (BOOL)checkBundleIDExists { +- (BOOL)validateAppIdentifiers { + // When the ApplicationIdentifierModel fails to initialize, it is usually due to + // failing computeExecutableInfo. This can happen if the user sets the + // Exported Symbols File in Build Settings, and leaves off the one symbol + // that Crashlytics needs, "__mh_execute_header" (wich is defined in mach-o/ldsyms.h as + // _MH_EXECUTE_SYM). From https://github.com/firebase/firebase-ios-sdk/issues/5020 + if (!self.appIDModel) { + FIRCLSErrorLog( + @"Crashlytics could not find the symbol for the app's main function and cannot " + @"start up. This can happen when Exported Symbols File is set in Build Settings. To " + @"resolve this, add \"__mh_execute_header\" as a newline to your Exported Symbols File."); + return NO; + } + if (self.appIDModel.bundleID.length == 0) { FIRCLSErrorLog(@"An application must have a valid bundle identifier in its Info.plist"); return NO; @@ -536,33 +558,8 @@ - (FIRCLSReportUploader *)uploader { return _uploader; } -#if CLS_MACH_EXCEPTION_SUPPORTED -- (exception_mask_t)machExceptionMask { - __block exception_mask_t mask = 0; - - // TODO(b/141241224) This if statement was hardcoded to no, so this block was never run - // FIRCLSSignalEnumerateHandledSignals(^(int idx, int signal) { - // if ([self.delegate ensureDeliveryOfUnixSignal:signal]) { - // mask |= FIRCLSMachExceptionMaskForSignal(signal); - // } - // }); - - return mask; -} -#endif - #pragma mark - Reporting Lifecycle -- (BOOL)installCrashReportingHandlers:(FIRCLSContextInitData *)initData { - if (!FIRCLSContextInitialize(initData)) { - return NO; - } - - [self setupStateNotifications]; - - return YES; -} - - (FIRCLSInternalReport *)setupCurrentReport:(NSString *)executionIdentifier { [self createLaunchFailureMarker]; @@ -572,14 +569,6 @@ - (FIRCLSInternalReport *)setupCurrentReport:(NSString *)executionIdentifier { executionIdentifier:executionIdentifier]; } -- (void)removeExistingReportPaths:(NSArray *)reportPaths { - [self.operationQueue addOperationWithBlock:^{ - for (NSString *path in reportPaths) { - [self.fileManager removeItemAtPath:path]; - } - }]; -} - - (int)countSubmittableAndDeleteUnsubmittableReportPaths:(NSArray *)reportPaths { int count = 0; for (NSString *path in reportPaths) { @@ -643,13 +632,25 @@ - (void)submitReport:(FIRCLSInternalReport *)report [self didSubmitReport]; } -- (void)removeReport:(FIRCLSInternalReport *)report { - [_fileManager removeItemAtPath:report.path]; -} +// This is the side-effect of calling deleteUnsentReports, or collect_reports setting +// being false +- (void)deleteUnsentReportsWithPreexisting:(NSArray *)preexistingReportPaths { + [self removeExistingReportPaths:preexistingReportPaths]; -- (void)removeContentsInOtherReportingDirectories { [self removeExistingReportPaths:self.fileManager.processingPathContents]; - [self removeExistingReportPaths:self.fileManager.preparedPathContents]; + if (self.settings.shouldUseNewReportEndpoint) { + [self removeExistingReportPaths:self.fileManager.preparedPathContents]; + } else { + [self removeExistingReportPaths:self.fileManager.legacyPreparedPathContents]; + } +} + +- (void)removeExistingReportPaths:(NSArray *)reportPaths { + [self.operationQueue addOperationWithBlock:^{ + for (NSString *path in reportPaths) { + [self.fileManager removeItemAtPath:path]; + } + }]; } - (void)handleContentsInOtherReportingDirectoriesWithToken:(FIRCLSDataCollectionToken *)token { @@ -673,7 +674,9 @@ - (void)handleExistingFilesInProcessingWithToken:(FIRCLSDataCollectionToken *)to } - (void)handleExistingFilesInPreparedWithToken:(FIRCLSDataCollectionToken *)token { - NSArray *preparedPaths = _fileManager.preparedPathContents; + NSArray *preparedPaths = self.settings.shouldUseNewReportEndpoint + ? _fileManager.preparedPathContents + : _fileManager.legacyPreparedPathContents; // Give our network client a chance to reconnect here, if needed. This attempts to avoid // trying to re-submit a prepared file that is already in flight. diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager_Private.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager_Private.h index 4940855..f7f1397 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager_Private.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager_Private.h @@ -15,6 +15,8 @@ #import "FIRCLSReportManager.h" #import "FIRCLSReportUploader.h" +@class FIRCLSInstallIdentifierModel; + @interface FIRCLSReportManager () @property(nonatomic, strong) NSOperationQueue *operationQueue; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.h index d1d9e96..c1cf8b4 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.h @@ -14,6 +14,8 @@ #import +#import + @class FIRCLSDataCollectionToken; @class FIRCLSInternalReport; @class FIRCLSSettings; @@ -73,5 +75,6 @@ - (NSString *)googleAppID; - (FIRCLSSettings *)settings; +- (GDTCORTransport *)googleTransport; @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.m index aa837b2..6b82635 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import +#import "Interop/Analytics/Public/FIRAnalyticsInterop.h" #import "FIRCLSApplication.h" #import "FIRCLSDataCollectionArbiter.h" @@ -25,6 +25,7 @@ #import "FIRCLSNetworkClient.h" #import "FIRCLSPackageReportOperation.h" #import "FIRCLSProcessReportOperation.h" +#import "FIRCLSReportAdapter.h" #import "FIRCLSReportUploader_Private.h" #import "FIRCLSSettings.h" #import "FIRCLSSymbolResolver.h" @@ -35,6 +36,9 @@ #import "FIRCLSMultipartMimeStreamEncoder.h" #import "FIRCLSURLBuilder.h" +#import +#import + @interface FIRCLSReportUploader () { id _analytics; } @@ -63,67 +67,6 @@ - (instancetype)initWithQueue:(NSOperationQueue *)queue return self; } -#pragma mark - Properties - -- (NSURL *)reportURL { - FIRCLSURLBuilder *url = [FIRCLSURLBuilder URLWithBase:FIRCLSReportsEndpoint]; - - [url appendComponent:@"/sdk-api/v1/platforms/"]; - [url appendComponent:FIRCLSApplicationGetPlatform()]; - [url appendComponent:@"/apps/"]; - [url appendComponent:self.dataSource.settings.fetchedBundleID]; - [url appendComponent:@"/reports"]; - - return [url URL]; -} - -- (NSString *)localeIdentifier { - return [[NSLocale currentLocale] localeIdentifier]; -} - -#pragma mark - URL Requests -- (NSMutableURLRequest *)mutableRequestWithURL:(NSURL *)url timeout:(NSTimeInterval)timeout { - NSMutableURLRequest *request = - [NSMutableURLRequest requestWithURL:url - cachePolicy:NSURLRequestReloadIgnoringLocalCacheData - timeoutInterval:timeout]; - - NSString *localeId = [self localeIdentifier]; - - [request setValue:@CLS_SDK_GENERATOR_NAME forHTTPHeaderField:FIRCLSNetworkUserAgent]; - [request setValue:FIRCLSNetworkApplicationJson forHTTPHeaderField:FIRCLSNetworkAccept]; - [request setValue:FIRCLSNetworkUTF8 forHTTPHeaderField:FIRCLSNetworkAcceptCharset]; - [request setValue:localeId forHTTPHeaderField:FIRCLSNetworkAcceptLanguage]; - [request setValue:localeId forHTTPHeaderField:FIRCLSNetworkContentLanguage]; - [request setValue:FIRCLSDeveloperToken forHTTPHeaderField:FIRCLSNetworkCrashlyticsDeveloperToken]; - [request setValue:FIRCLSApplicationGetSDKBundleID() - forHTTPHeaderField:FIRCLSNetworkCrashlyticsAPIClientId]; - [request setValue:@CLS_SDK_DISPLAY_VERSION - forHTTPHeaderField:FIRCLSNetworkCrashlyticsAPIClientDisplayVersion]; - [request setValue:[[self dataSource] googleAppID] - forHTTPHeaderField:FIRCLSNetworkCrashlyticsGoogleAppId]; - - return request; -} - -- (BOOL)fillInRequest:(NSMutableURLRequest *)request forMultipartMimeDataAtPath:(NSString *)path { - NSString *boundary = [[path lastPathComponent] stringByDeletingPathExtension]; - - [request setValue:[FIRCLSMultipartMimeStreamEncoder - contentTypeHTTPHeaderValueWithBoundary:boundary] - forHTTPHeaderField:@"Content-Type"]; - - NSNumber *fileSize = [[self fileManager] fileSizeAtPath:path]; - if (fileSize == nil) { - FIRCLSErrorLog(@"Could not determine size of multipart mime file"); - return NO; - } - - [request setValue:[fileSize stringValue] forHTTPHeaderField:@"Content-Length"]; - - return YES; -} - #pragma mark - Packaging and Submission - (BOOL)prepareAndSubmitReport:(FIRCLSInternalReport *)report dataCollectionToken:(FIRCLSDataCollectionToken *)dataCollectionToken @@ -136,18 +79,18 @@ - (BOOL)prepareAndSubmitReport:(FIRCLSInternalReport *)report return NO; } - NSString *reportOrgID = self.dataSource.settings.orgID; - if (!reportOrgID) { - FIRCLSDebugLog(@"Skipping report with id '%@' this run of the app because Organization ID was " - @"nil. Report will upload once settings are download successfully", - report.identifier); + if (!self.dataSource.settings.orgID && !self.dataSource.settings.shouldUseNewReportEndpoint) { + FIRCLSDebugLog( + @"Skipping report with id '%@' this run of the app because Organization ID was " + @"nil. Report via the legacy endpoint will upload once settings are download successfully", + report.identifier); return YES; } FIRCLSApplicationActivity( FIRCLSApplicationActivityDefault, @"Crashlytics Crash Report Processing", ^{ if (shouldProcess) { - if (![self.fileManager moveItemAtPath:[report path] + if (![self.fileManager moveItemAtPath:report.path toDirectory:self.fileManager.processingPath]) { FIRCLSErrorLog(@"Unable to move report for processing"); return; @@ -165,26 +108,42 @@ - (BOOL)prepareAndSubmitReport:(FIRCLSInternalReport *)report [processOperation start]; } - FIRCLSPackageReportOperation *packageOperation = - [[FIRCLSPackageReportOperation alloc] initWithReport:report - fileManager:self.fileManager - settings:self.dataSource.settings]; + NSString *packagedPath; - [packageOperation start]; + FIRCLSDebugLog(@"Preparing the report for the new endpoint: %d", + self.dataSource.settings.shouldUseNewReportEndpoint); - NSString *packagedPath = [packageOperation finalPath]; - if (!packagedPath) { - FIRCLSErrorLog(@"Unable to package report"); - return; - } - - // Save the crashed on date for potential scion event sending. - NSTimeInterval crashedOnDate = report.crashedOnDate.timeIntervalSince1970; - // We only want to forward crash events to scion, storing this for later use. + // With the new report endpoint, the report is deleted once it is written to GDT + // Check if the report has a crash file before the report is moved or deleted BOOL isCrash = report.isCrash; - if (![[self fileManager] removeItemAtPath:[report path]]) { - FIRCLSErrorLog(@"Unable to remove a processing item"); + if (self.dataSource.settings.shouldUseNewReportEndpoint) { + // For the new endpoint, just move the .clsrecords from "processing" -> "prepared" + if (![self.fileManager moveItemAtPath:report.path + toDirectory:self.fileManager.preparedPath]) { + FIRCLSErrorLog(@"Unable to move report to prepared"); + return; + } + + packagedPath = [self.fileManager.preparedPath + stringByAppendingPathComponent:report.path.lastPathComponent]; + } else { + // For the legacy endpoint, continue generate the multipartmime file in "prepared-legacy" + FIRCLSPackageReportOperation *packageOperation = + [[FIRCLSPackageReportOperation alloc] initWithReport:report + fileManager:self.fileManager + settings:self.dataSource.settings]; + + [packageOperation start]; + packagedPath = packageOperation.finalPath; + if (!packagedPath) { + FIRCLSErrorLog(@"Unable to package report"); + return; + } + + if (![self.fileManager removeItemAtPath:report.path]) { + FIRCLSErrorLog(@"Unable to remove a processing item"); + } } NSLog(@"[Firebase/Crashlytics] Packaged report with id '%@' for submission", @@ -194,9 +153,11 @@ - (BOOL)prepareAndSubmitReport:(FIRCLSInternalReport *)report dataCollectionToken:dataCollectionToken asUrgent:urgent]; - // If the upload was successful and the report contained a crash forward it to scion. + // If the upload was successful and the report contained a crash forward it to Google + // Analytics. if (success && isCrash) { - [FIRCLSFCRAnalytics logCrashWithTimeStamp:crashedOnDate toAnalytics:self->_analytics]; + [FIRCLSFCRAnalytics logCrashWithTimeStamp:report.crashedOnDate.timeIntervalSince1970 + toAnalytics:self->_analytics]; } }); @@ -243,9 +204,69 @@ - (BOOL)uploadPackagedReportAtPath:(NSString *)path asUrgent:(BOOL)urgent { FIRCLSDeveloperLog("Crashlytics:Crash:Reports", @"Submitting report%@", urgent ? @" as urgent" : @""); - return [self submitPackageMultipartMimeAtPath:path - dataCollectionToken:dataCollectionToken - synchronously:urgent]; + + // Check with the legacy path as the new path will always be contained in the legacy path + BOOL isNewPreparedPath = ![path containsString:self.fileManager.legacyPreparedPath]; + + if (isNewPreparedPath && self.dataSource.settings.shouldUseNewReportEndpoint) { + if (![dataCollectionToken isValid]) { + FIRCLSErrorLog(@"A report upload was requested with an invalid data collection token."); + return NO; + } + + FIRCLSReportAdapter *adapter = + [[FIRCLSReportAdapter alloc] initWithPath:path googleAppId:self.dataSource.googleAppID]; + + GDTCOREvent *event = [self.dataSource.googleTransport eventForTransport]; + event.dataObject = adapter; + event.qosTier = GDTCOREventQoSFast; // Bypass batching, send immediately + + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + + __block BOOL success = YES; + + [self.dataSource.googleTransport + sendDataEvent:event + onComplete:^(BOOL wasWritten, NSError *error) { + if (!wasWritten) { + FIRCLSDeveloperLog("Crashlytics:Crash:Reports", + @"Failed to send crash report due to gdt write failure."); + success = NO; + return; + } + + if (error) { + FIRCLSDeveloperLog("Crashlytics:Crash:Reports", + @"Failed to send crash report due to gdt error: %@", + error.localizedDescription); + success = NO; + return; + } + + FIRCLSDeveloperLog("Crashlytics:Crash:Reports", + @"Completed report submission with id: %@", path.lastPathComponent); + + if (urgent) { + dispatch_semaphore_signal(semaphore); + } + + [self cleanUpSubmittedReportAtPath:path]; + }]; + + if (urgent) { + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + } + + return success; + + } else if (!isNewPreparedPath && !self.dataSource.settings.shouldUseNewReportEndpoint) { + return [self submitPackageMultipartMimeAtPath:path + dataCollectionToken:dataCollectionToken + synchronously:urgent]; + } + + // Unsupported state + return NO; } - (BOOL)cleanUpSubmittedReportAtPath:(NSString *)path { @@ -271,4 +292,65 @@ - (void)reportUploadAtPath:(NSString *)path error:error]; } +#pragma mark - Properties (TODO: Can delete once the experiment is over) + +- (NSURL *)reportURL { + FIRCLSURLBuilder *url = [FIRCLSURLBuilder URLWithBase:FIRCLSReportsEndpoint]; + + [url appendComponent:@"/sdk-api/v1/platforms/"]; + [url appendComponent:FIRCLSApplicationGetPlatform()]; + [url appendComponent:@"/apps/"]; + [url appendComponent:self.dataSource.settings.fetchedBundleID]; + [url appendComponent:@"/reports"]; + + return [url URL]; +} + +- (NSString *)localeIdentifier { + return [[NSLocale currentLocale] localeIdentifier]; +} + +#pragma mark - URL Requests +- (NSMutableURLRequest *)mutableRequestWithURL:(NSURL *)url timeout:(NSTimeInterval)timeout { + NSMutableURLRequest *request = + [NSMutableURLRequest requestWithURL:url + cachePolicy:NSURLRequestReloadIgnoringLocalCacheData + timeoutInterval:timeout]; + + NSString *localeId = [self localeIdentifier]; + + [request setValue:@CLS_SDK_GENERATOR_NAME forHTTPHeaderField:FIRCLSNetworkUserAgent]; + [request setValue:FIRCLSNetworkApplicationJson forHTTPHeaderField:FIRCLSNetworkAccept]; + [request setValue:FIRCLSNetworkUTF8 forHTTPHeaderField:FIRCLSNetworkAcceptCharset]; + [request setValue:localeId forHTTPHeaderField:FIRCLSNetworkAcceptLanguage]; + [request setValue:localeId forHTTPHeaderField:FIRCLSNetworkContentLanguage]; + [request setValue:FIRCLSDeveloperToken forHTTPHeaderField:FIRCLSNetworkCrashlyticsDeveloperToken]; + [request setValue:FIRCLSApplicationGetSDKBundleID() + forHTTPHeaderField:FIRCLSNetworkCrashlyticsAPIClientId]; + [request setValue:@CLS_SDK_DISPLAY_VERSION + forHTTPHeaderField:FIRCLSNetworkCrashlyticsAPIClientDisplayVersion]; + [request setValue:[[self dataSource] googleAppID] + forHTTPHeaderField:FIRCLSNetworkCrashlyticsGoogleAppId]; + + return request; +} + +- (BOOL)fillInRequest:(NSMutableURLRequest *)request forMultipartMimeDataAtPath:(NSString *)path { + NSString *boundary = [[path lastPathComponent] stringByDeletingPathExtension]; + + [request setValue:[FIRCLSMultipartMimeStreamEncoder + contentTypeHTTPHeaderValueWithBoundary:boundary] + forHTTPHeaderField:@"Content-Type"]; + + NSNumber *fileSize = [[self fileManager] fileSizeAtPath:path]; + if (fileSize == nil) { + FIRCLSErrorLog(@"Could not determine size of multipart mime file"); + return NO; + } + + [request setValue:[fileSize stringValue] forHTTPHeaderField:@"Content-Length"]; + + return YES; +} + @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.m index 3d40af2..e7d5996 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.m @@ -20,7 +20,7 @@ #import "FBLPromises.h" #endif -#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" #import "FIRCLSUserDefaults.h" diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.m index 1c7257a..244dbe1 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.m @@ -235,7 +235,7 @@ - (void)synchronize { NSDictionary *state = [self dictionaryRepresentation]; dispatch_sync(self.synchronizationQueue, ^{ #if CLS_TARGET_CAN_WRITE_TO_DISK - BOOL isDirectory; + BOOL isDirectory = NO; BOOL pathExists = [[NSFileManager defaultManager] fileExistsAtPath:[self->_directoryURL path] isDirectory:&isDirectory]; @@ -280,7 +280,7 @@ - (NSDictionary *)loadDefaults { __block NSDictionary *state = nil; dispatch_sync(self.synchronizationQueue, ^{ #if CLS_TARGET_CAN_WRITE_TO_DISK - BOOL isDirectory; + BOOL isDirectory = NO; BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:[self->_fileURL path] isDirectory:&isDirectory]; @@ -289,7 +289,7 @@ - (NSDictionary *)loadDefaults { if (nil == state) { FIRCLSErrorLog(@"Failed to read existing UserDefaults file"); } - } else if (!fileExists && !isDirectory) { + } else if (!fileExists) { // No file found. This is expected on first launch. } else if (fileExists && isDirectory) { FIRCLSErrorLog(@"Found directory where file expected. Removing conflicting directory"); diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCrashlytics.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCrashlytics.m index db3894c..16e7a2f 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCrashlytics.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCrashlytics.m @@ -20,6 +20,7 @@ #import "FBLPromises.h" #endif +#import "FIRCLSApplicationIdentifierModel.h" #include "FIRCLSCrashedMarkerFile.h" #import "FIRCLSDataCollectionArbiter.h" #import "FIRCLSDefines.h" @@ -29,6 +30,7 @@ #import "FIRCLSHost.h" #include "FIRCLSProfiling.h" #import "FIRCLSReport_Private.h" +#import "FIRCLSSettings.h" #import "FIRCLSUserDefaults.h" #include "FIRCLSUserLogging.h" #include "FIRCLSUtility.h" @@ -39,14 +41,12 @@ #import "FIRCLSReportManager.h" -#import -#import -#import -#import -#import -#import -#import -#import +#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" +#import "Interop/Analytics/Public/FIRAnalyticsInterop.h" + +#import +#import #if TARGET_OS_IPHONE #import @@ -59,6 +59,8 @@ static atomic_bool _hasInitializedInstance; +NSString *const FIRCLSGoogleTransportMappingID = @"1206"; + /// Empty protocol to register with FirebaseCore's component system. @protocol FIRCrashlyticsInstanceProvider @end @@ -70,6 +72,7 @@ @interface FIRCrashlytics () @property(nonatomic) FIRCLSDataCollectionArbiter *dataArbiter; @property(nonatomic) FIRCLSFileManager *fileManager; @property(nonatomic) FIRCLSReportManager *reportManager; +@property(nonatomic) GDTCORTransport *googleTransport; @end @@ -79,7 +82,7 @@ @implementation FIRCrashlytics - (instancetype)initWithApp:(FIRApp *)app appInfo:(NSDictionary *)appInfo - instanceID:(FIRInstanceID *)instanceID + installations:(FIRInstallations *)installations analytics:(id)analytics { self = [super init]; @@ -97,14 +100,26 @@ - (instancetype)initWithApp:(FIRApp *)app FIRCLSDeveloperLog("Crashlytics", @"Running on %@, %@ (%@)", FIRCLSHostModelInfo(), FIRCLSHostOSDisplayVersion(), FIRCLSHostOSBuildVersion()); + _googleTransport = [[GDTCORTransport alloc] initWithMappingID:FIRCLSGoogleTransportMappingID + transformers:nil + target:kGDTCORTargetCSH]; + _fileManager = [[FIRCLSFileManager alloc] init]; _googleAppID = app.options.googleAppID; _dataArbiter = [[FIRCLSDataCollectionArbiter alloc] initWithApp:app withAppInfo:appInfo]; + + FIRCLSApplicationIdentifierModel *appModel = [[FIRCLSApplicationIdentifierModel alloc] init]; + FIRCLSSettings *settings = [[FIRCLSSettings alloc] initWithFileManager:_fileManager + appIDModel:appModel]; + _reportManager = [[FIRCLSReportManager alloc] initWithFileManager:_fileManager - instanceID:instanceID + installations:installations analytics:analytics googleAppID:_googleAppID - dataArbiter:_dataArbiter]; + dataArbiter:_dataArbiter + googleTransport:_googleTransport + appIDModel:appModel + settings:settings]; // Process did crash during previous execution NSString *crashedMarkerFileName = [NSString stringWithUTF8String:FIRCLSCrashedMarkerFileName]; @@ -151,13 +166,13 @@ + (void)load { id analytics = FIR_COMPONENT(FIRAnalyticsInterop, container); - FIRInstanceID *instanceID = FIRInstanceID.instanceID; + FIRInstallations *installations = [FIRInstallations installationsWithApp:container.app]; *isCacheable = YES; return [[FIRCrashlytics alloc] initWithApp:container.app appInfo:NSBundle.mainBundle.infoDictionary - instanceID:instanceID + installations:installations analytics:analytics]; }; @@ -296,11 +311,8 @@ - (void)recordError:(NSError *)error { FIRCLSUserLoggingRecordError(error, nil); } -- (void)recordCustomExceptionName:(NSString *)name - reason:(NSString *)reason - frameArray:(NSArray *)frameArray { - FIRCLSExceptionRecord(FIRCLSExceptionTypeCustom, [[name copy] UTF8String], - [[reason copy] UTF8String], [frameArray copy], NO); +- (void)recordExceptionModel:(FIRExceptionModel *)exceptionModel { + FIRCLSExceptionRecordModel(exceptionModel); } @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRExceptionModel.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRExceptionModel.m new file mode 100644 index 0000000..f0c4697 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRExceptionModel.m @@ -0,0 +1,42 @@ +// Copyright 2020 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "FIRExceptionModel.h" + +@interface FIRExceptionModel () + +@property(nonatomic, copy) NSString *name; +@property(nonatomic, copy) NSString *reason; + +@end + +@implementation FIRExceptionModel + +- (instancetype)initWithName:(NSString *)name reason:(NSString *)reason { + self = [super init]; + if (!self) { + return nil; + } + + _name = [name copy]; + _reason = [reason copy]; + + return self; +} + ++ (instancetype)exceptionModelWithName:(NSString *)name reason:(NSString *)reason { + return [[FIRExceptionModel alloc] initWithName:name reason:reason]; +} + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRStackFrame.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRStackFrame.m new file mode 100644 index 0000000..3044914 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRStackFrame.m @@ -0,0 +1,94 @@ +// Copyright 2020 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "FIRStackFrame_Private.h" + +@interface FIRStackFrame () + +@property(nonatomic, copy, nullable) NSString *symbol; +@property(nonatomic, copy, nullable) NSString *rawSymbol; +@property(nonatomic, copy, nullable) NSString *library; +@property(nonatomic, copy, nullable) NSString *fileName; +@property(nonatomic, assign) uint32_t lineNumber; +@property(nonatomic, assign) uint64_t offset; +@property(nonatomic, assign) uint64_t address; + +@property(nonatomic, assign) BOOL isSymbolicated; + +@end + +@implementation FIRStackFrame + +#pragma mark - Public Methods + +- (instancetype)initWithSymbol:(NSString *)symbol file:(NSString *)file line:(NSInteger)line { + self = [super init]; + if (!self) { + return nil; + } + + _symbol = [symbol copy]; + _fileName = [file copy]; + _lineNumber = (uint32_t)line; + + _isSymbolicated = true; + + return self; +} + ++ (instancetype)stackFrameWithSymbol:(NSString *)symbol file:(NSString *)file line:(NSInteger)line { + return [[FIRStackFrame alloc] initWithSymbol:symbol file:file line:line]; +} + +#pragma mark - Internal Methods + ++ (instancetype)stackFrame { + return [[self alloc] init]; +} + ++ (instancetype)stackFrameWithAddress:(NSUInteger)address { + FIRStackFrame *frame = [self stackFrame]; + + [frame setAddress:address]; + + return frame; +} + ++ (instancetype)stackFrameWithSymbol:(NSString *)symbol { + FIRStackFrame *frame = [self stackFrame]; + + frame.symbol = symbol; + frame.rawSymbol = symbol; + + return frame; +} + +#pragma mark - Overrides + +- (NSString *)description { + if (self.isSymbolicated) { + return [NSString + stringWithFormat:@"{%@ - %@:%u}", [self fileName], [self symbol], [self lineNumber]]; + } + + if (self.fileName) { + return [NSString stringWithFormat:@"{[0x%llx] %@ - %@:%u}", [self address], [self fileName], + [self symbol], [self lineNumber]]; + } + + return [NSString + stringWithFormat:@"{[0x%llx + %u] %@}", [self address], [self lineNumber], [self symbol]]; +} + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.h index 7287d9e..61dac77 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.h @@ -19,7 +19,8 @@ #ifdef __OBJC__ #import -@class FIRCLSStackFrame; +@class FIRStackFrame; +@class FIRExceptionModel; #endif #define CLS_EXCEPTION_STRING_LENGTH_MAX (1024 * 16) @@ -60,11 +61,12 @@ void FIRCLSExceptionRaiseTestObjCException(void) __attribute((noreturn)); void FIRCLSExceptionRaiseTestCppException(void) __attribute((noreturn)); #ifdef __OBJC__ +void FIRCLSExceptionRecordModel(FIRExceptionModel* exceptionModel); void FIRCLSExceptionRecordNSException(NSException* exception); void FIRCLSExceptionRecord(FIRCLSExceptionType type, const char* name, const char* reason, - NSArray* frames, + NSArray* frames, BOOL attemptDelivery); #endif diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.mm b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.mm index 1eeecb6..6f20990 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.mm +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.mm @@ -16,13 +16,15 @@ #include "FIRCLSException.h" +#import "FIRExceptionModel_Private.h" +#import "FIRStackFrame_Private.h" + #include "FIRCLSApplication.h" #include "FIRCLSFile.h" #include "FIRCLSGlobals.h" #include "FIRCLSHandler.h" #import "FIRCLSLogger.h" #include "FIRCLSProcess.h" -#import "FIRCLSStackFrame.h" #import "FIRCLSUserLogging.h" #import "FIRCLSUtility.h" @@ -76,6 +78,14 @@ void FIRCLSExceptionInitialize(FIRCLSExceptionReadOnlyContext *roContext, rwContext->customExceptionCount = 0; } +void FIRCLSExceptionRecordModel(FIRExceptionModel *exceptionModel) { + const char *name = [[exceptionModel.name copy] UTF8String]; + const char *reason = [[exceptionModel.reason copy] UTF8String]; + + FIRCLSExceptionRecord(FIRCLSExceptionTypeCustom, name, reason, [exceptionModel.stackTrace copy], + NO); +} + void FIRCLSExceptionRecordNSException(NSException *exception) { FIRCLSSDKLog("Recording an NSException\n"); @@ -93,14 +103,14 @@ void FIRCLSExceptionRecordNSException(NSException *exception) { NSMutableArray *frames = [NSMutableArray new]; for (NSNumber *address in returnAddresses) { - [frames addObject:[FIRCLSStackFrame stackFrameWithAddress:[address unsignedIntegerValue]]]; + [frames addObject:[FIRStackFrame stackFrameWithAddress:[address unsignedIntegerValue]]]; } FIRCLSExceptionRecord(FIRCLSExceptionTypeObjectiveC, [name UTF8String], [reason UTF8String], frames, YES); } -static void FIRCLSExceptionRecordFrame(FIRCLSFile *file, FIRCLSStackFrame *frame) { +static void FIRCLSExceptionRecordFrame(FIRCLSFile *file, FIRStackFrame *frame) { FIRCLSFileWriteHashStart(file); FIRCLSFileWriteHashEntryUint64(file, "pc", [frame address]); @@ -150,7 +160,7 @@ void FIRCLSExceptionWrite(FIRCLSFile *file, FIRCLSExceptionType type, const char *name, const char *reason, - NSArray *frames) { + NSArray *frames) { FIRCLSFileWriteSectionStart(file, "exception"); FIRCLSFileWriteHashStart(file); @@ -164,7 +174,7 @@ void FIRCLSExceptionWrite(FIRCLSFile *file, FIRCLSFileWriteHashKey(file, "frames"); FIRCLSFileWriteArrayStart(file); - for (FIRCLSStackFrame *frame in frames) { + for (FIRStackFrame *frame in frames) { FIRCLSExceptionRecordFrame(file, frame); } @@ -179,7 +189,7 @@ void FIRCLSExceptionWrite(FIRCLSFile *file, void FIRCLSExceptionRecord(FIRCLSExceptionType type, const char *name, const char *reason, - NSArray *frames, + NSArray *frames, BOOL attemptDelivery) { if (!FIRCLSContextIsInitialized()) { return; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSHandler.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSHandler.h index 2940de2..7ce03e4 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSHandler.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSHandler.h @@ -14,10 +14,10 @@ #pragma once -#include "FIRCLSFile.h" - #include +#include "FIRCLSFile.h" + __BEGIN_DECLS void FIRCLSHandler(FIRCLSFile* file, thread_t crashedThread, void* uapVoid); diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.m index 6901290..56dd33b 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.m @@ -17,16 +17,11 @@ #import "FIRCLSInternalLogging.h" #import "FIRCLSSettings.h" -#import +#import "Interop/Analytics/Public/FIRAnalyticsInterop.h" // Origin for events and user properties generated by Crashlytics. static NSString *const kFIREventOriginCrash = @"clx"; -// Origin for events and user properties generated by Crash Reporting. -// We're using this for now because it's whitelisted, and "clx" is not. -// TODO(b/144163610) add a separate parameter for Crashlytics -static NSString *const kFIREventListenerOriginCrash = @"crash"; - // App exception event name. static NSString *const kFIREventAppException = @"_ae"; @@ -36,13 +31,6 @@ // Fatal key for the event payload. static NSString *const kFIRParameterFatal = @"fatal"; -// Realtime flag -// TODO(b/144114243) We had to remove this because it's blacklisted. -// Previously, the value was set as: -// static NSString *const kFIRParameterRealtime = @"_r"; -// and used in buildLogParamsFromCrash as: -// kFIRParameterRealtime : @(INT64_C(1)), - FOUNDATION_STATIC_INLINE NSNumber *timeIntervalInMillis(NSTimeInterval timeInterval) { return @(llrint(timeInterval * 1000.0)); } @@ -66,7 +54,7 @@ + (void)registerEventListener:(id)eventListener return; } - [analytics registerAnalyticsListener:eventListener withOrigin:kFIREventListenerOriginCrash]; + [analytics registerAnalyticsListener:eventListener withOrigin:kFIREventOriginCrash]; FIRCLSDeveloperLog(@"Crashlytics:Crash:Reports:Event", "Registered Firebase Analytics event listener"); diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFile.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFile.h index ad2e54d..1714ac1 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFile.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFile.h @@ -18,6 +18,11 @@ #include #include +// Required for 1P builds +#include +#include +#include + #if defined(__OBJC__) #import #endif diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSLogger.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSLogger.m index 0bef608..50bd192 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSLogger.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSLogger.m @@ -14,7 +14,7 @@ #import "FIRCLSLogger.h" -#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" FIRLoggerService kFIRLoggerCrashlytics = @"[Firebase/Crashlytics]"; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.h index cb788f7..dd988a9 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.h @@ -43,7 +43,9 @@ @property(nonatomic, readonly) NSString *processingPath; @property(nonatomic, readonly) NSString *pendingPath; @property(nonatomic, readonly) NSString *preparedPath; +@property(nonatomic, readonly) NSString *legacyPreparedPath; @property(nonatomic, readonly) NSArray *activePathContents; +@property(nonatomic, readonly) NSArray *legacyPreparedPathContents; @property(nonatomic, readonly) NSArray *preparedPathContents; @property(nonatomic, readonly) NSArray *processingPathContents; @@ -57,7 +59,6 @@ - (BOOL)moveItemAtPath:(NSString *)path toDirectory:(NSString *)destDir; - (void)enumerateFilesInDirectory:(NSString *)directory usingBlock:(void (^)(NSString *filePath, NSString *extension))block; -- (BOOL)moveItemsFromDirectory:(NSString *)srcDir toDirectory:(NSString *)destDir; - (NSNumber *)fileSizeAtPath:(NSString *)path; - (NSArray *)contentsOfDirectory:(NSString *)path; @@ -65,18 +66,8 @@ - (BOOL)createReportDirectories; - (NSString *)setupNewPathForExecutionIdentifier:(NSString *)identifier; -- (void)enumerateFilesInActiveDirectoryUsingBlock:(void (^)(NSString *path, - NSString *extension))block; -- (void)enumerateReportsInProcessingDirectoryUsingBlock:(void (^)(FIRCLSInternalReport *report, - NSString *path))block; -- (void)enumerateFilesInPreparedDirectoryUsingBlock:(void (^)(NSString *path, - NSString *extension))block; +- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error; -- (BOOL)moveProcessingContentsToPrepared; -- (BOOL)movePendingToProcessing; - -- (BOOL)removeContentsOfProcessingPath; -- (BOOL)removeContentsOfPendingPath; -- (BOOL)removeContentsOfAllPaths; +- (NSData *)dataWithContentsOfFile:(NSString *)path; @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.m index b47d506..040dcf5 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.m @@ -19,7 +19,7 @@ #import "FIRCLSLogger.h" NSString *const FIRCLSCacheDirectoryName = @"com.crashlytics.data"; -NSString *const FIRCLSCacheVersion = @"v4"; +NSString *const FIRCLSCacheVersion = @"v5"; @interface FIRCLSFileManager () { NSString *_rootPath; @@ -146,17 +146,6 @@ - (void)enumerateFilesInDirectory:(NSString *)directory } } -- (BOOL)moveItemsFromDirectory:(NSString *)srcDir toDirectory:(NSString *)destDir { - __block BOOL success = YES; - - [self enumerateFilesInDirectory:srcDir - usingBlock:^(NSString *filePath, NSString *extension) { - success = success && [self moveItemAtPath:filePath toDirectory:destDir]; - }]; - - return success; -} - - (NSNumber *)fileSizeAtPath:(NSString *)path { NSError *error = nil; NSDictionary *attrs = [[self underlyingFileManager] attributesOfItemAtPath:path error:&error]; @@ -223,6 +212,10 @@ - (NSString *)processingPath { return [[self structurePath] stringByAppendingPathComponent:@"processing"]; } +- (NSString *)legacyPreparedPath { + return [[self structurePath] stringByAppendingPathComponent:@"prepared-legacy"]; +} + - (NSString *)preparedPath { return [[self structurePath] stringByAppendingPathComponent:@"prepared"]; } @@ -231,6 +224,10 @@ - (NSArray *)activePathContents { return [self contentsOfDirectory:[self activePath]]; } +- (NSArray *)legacyPreparedPathContents { + return [self contentsOfDirectory:[self legacyPreparedPath]]; +} + - (NSArray *)preparedPathContents { return [self contentsOfDirectory:[self preparedPath]]; } @@ -249,6 +246,10 @@ - (BOOL)createReportDirectories { return NO; } + if (![self createDirectoryAtPath:[self legacyPreparedPath]]) { + return NO; + } + if (![self createDirectoryAtPath:[self preparedPath]]) { return NO; } @@ -266,54 +267,13 @@ - (NSString *)setupNewPathForExecutionIdentifier:(NSString *)identifier { return path; } -- (void)enumerateReportsInProcessingDirectoryUsingBlock:(void (^)(FIRCLSInternalReport *report, - NSString *path))block { - [self enumerateFilesInDirectory:[self processingPath] - usingBlock:^(NSString *filePath, NSString *extension) { - FIRCLSInternalReport *report = - [FIRCLSInternalReport reportWithPath:filePath]; - if (block) { - block(report, filePath); - } - }]; -} - -- (void)enumerateFilesInActiveDirectoryUsingBlock:(void (^)(NSString *path, - NSString *extension))block { - [self enumerateFilesInDirectory:[self activePath] usingBlock:block]; -} - -- (void)enumerateFilesInPreparedDirectoryUsingBlock:(void (^)(NSString *path, - NSString *extension))block { - [self enumerateFilesInDirectory:[self preparedPath] usingBlock:block]; -} - -- (BOOL)moveProcessingContentsToPrepared { - return [self moveItemsFromDirectory:[self processingPath] toDirectory:[self preparedPath]]; +- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error { + return [self.underlyingFileManager moveItemAtPath:srcPath toPath:dstPath error:error]; } -- (BOOL)movePendingToProcessing { - return [self moveItemsFromDirectory:[self pendingPath] toDirectory:[self processingPath]]; -} - -- (BOOL)removeContentsOfProcessingPath { - return [self removeContentsOfDirectoryAtPath:[self processingPath]]; -} - -- (BOOL)removeContentsOfPendingPath { - return [self removeContentsOfDirectoryAtPath:[self pendingPath]]; -} - -- (BOOL)removeContentsOfAllPaths { - BOOL contentsOfProcessingPathRemoved = [self removeContentsOfProcessingPath]; - BOOL contentsOfPendingPathRemoved = [self removeContentsOfPendingPath]; - BOOL contentsOfDirectoryAtPreparedPathRemoved = - [self removeContentsOfDirectoryAtPath:self.preparedPath]; - BOOL contentsOfDirectoryAtActivePathRemoved = - [self removeContentsOfDirectoryAtPath:self.activePath]; - BOOL success = contentsOfProcessingPathRemoved && contentsOfPendingPathRemoved && - contentsOfDirectoryAtPreparedPathRemoved && contentsOfDirectoryAtActivePathRemoved; - return success; +// Wrapper over NSData so the method can be mocked for unit tests +- (NSData *)dataWithContentsOfFile:(NSString *)path { + return [NSData dataWithContentsOfFile:path]; } @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.h index 9cfd999..6100c8a 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.h @@ -14,7 +14,7 @@ #import -@class FIRInstanceID; +@class FIRInstallations; NS_ASSUME_NONNULL_BEGIN @@ -25,7 +25,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)init NS_UNAVAILABLE; -- (instancetype)initWithInstanceID:(FIRInstanceID *)instanceID NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithInstallations:(FIRInstallations *)instanceID NS_DESIGNATED_INITIALIZER; /** * Returns the backwards compatible Crashlytics Installation UUID diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.m index 1eaf184..2af2d7d 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.m @@ -14,7 +14,7 @@ #import "FIRCLSInstallIdentifierModel.h" -#import +#import #import "FIRCLSByteUtility.h" #import "FIRCLSLogger.h" @@ -31,7 +31,7 @@ @interface FIRCLSInstallIdentifierModel () @property(nonatomic, copy) NSString *installID; -@property(nonatomic, readonly) FIRInstanceID *instanceID; +@property(nonatomic, readonly) FIRInstallations *installations; @end @@ -41,7 +41,7 @@ @implementation FIRCLSInstallIdentifierModel // overridden setters and getters @synthesize installID = _installID; -- (instancetype)initWithInstanceID:(FIRInstanceID *)instanceID { +- (instancetype)initWithInstallations:(FIRInstallations *)installations { self = [super init]; if (!self) { return nil; @@ -49,7 +49,7 @@ - (instancetype)initWithInstanceID:(FIRInstanceID *)instanceID { // capture the install ID information _installID = [self readInstallationUUID].copy; - _instanceID = instanceID; + _installations = installations; if (!_installID) { FIRCLSDebugLog(@"Generating Install ID"); @@ -103,12 +103,13 @@ - (NSString *)generateInstallationUUID { */ - (void)regenerateInstallIDIfNeededWithBlock:(void (^)(BOOL didRotate))callback { // This callback is on the main thread - [self.instanceID getIDWithHandler:^(NSString *_Nullable currentIID, NSError *_Nullable error) { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ - BOOL didRotate = [self rotateCrashlyticsInstallUUIDWithIID:currentIID error:error]; - callback(didRotate); - }); - }]; + [self.installations + installationIDWithCompletion:^(NSString *_Nullable currentIID, NSError *_Nullable error) { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ + BOOL didRotate = [self rotateCrashlyticsInstallUUIDWithIID:currentIID error:error]; + callback(didRotate); + }); + }]; } - (BOOL)rotateCrashlyticsInstallUUIDWithIID:(NSString *_Nullable)currentIID diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.h index 84cb783..a02123f 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.h @@ -26,6 +26,8 @@ extern NSString *const FIRCLSReportMachExceptionFile; #endif extern NSString *const FIRCLSReportErrorAFile; extern NSString *const FIRCLSReportErrorBFile; +extern NSString *const FIRCLSReportLogAFile; +extern NSString *const FIRCLSReportLogBFile; extern NSString *const FIRCLSReportMetadataFile; extern NSString *const FIRCLSReportInternalIncrementalKVFile; extern NSString *const FIRCLSReportInternalCompactedKVFile; @@ -43,6 +45,8 @@ extern NSString *const FIRCLSReportUserCompactedKVFile; - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; ++ (NSArray *)crashFileNames; + @property(nonatomic, copy, readonly) NSString *directoryName; @property(nonatomic, copy) NSString *path; @property(nonatomic, assign, readonly) BOOL needsToBeSubmitted; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.m index 33e340d..74ac997 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.m @@ -12,6 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +// TODO: Remove this class after the uploading of reports via GoogleDataTransport is no longer an +// experiment + #import "FIRCLSInternalReport.h" #import "FIRCLSFile.h" @@ -29,6 +32,8 @@ NSString *const FIRCLSReportMetadataFile = @"metadata.clsrecord"; NSString *const FIRCLSReportErrorAFile = @"errors_a.clsrecord"; NSString *const FIRCLSReportErrorBFile = @"errors_b.clsrecord"; +NSString *const FIRCLSReportLogAFile = @"log_a.clsrecord"; +NSString *const FIRCLSReportLogBFile = @"log_b.clsrecord"; NSString *const FIRCLSReportInternalIncrementalKVFile = @"internal_incremental_kv.clsrecord"; NSString *const FIRCLSReportInternalCompactedKVFile = @"internal_compacted_kv.clsrecord"; NSString *const FIRCLSReportUserIncrementalKVFile = @"user_incremental_kv.clsrecord"; @@ -112,7 +117,13 @@ - (BOOL)needsToBeSubmitted { return [self checkExistenceOfAtLeastOnceFileInArray:reportFiles]; } -- (NSArray *)crashFilenames { +// These are purposefully in order of precedence. If duplicate data exists +// in any crash file, the exception file's contents take precedence over the +// rest, for example +// +// Do not change the order of this. +// ++ (NSArray *)crashFileNames { static NSArray *files; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ @@ -128,7 +139,7 @@ - (NSArray *)crashFilenames { } - (BOOL)isCrash { - NSArray *crashFiles = [self crashFilenames]; + NSArray *crashFiles = [FIRCLSInternalReport crashFileNames]; return [self checkExistenceOfAtLeastOnceFileInArray:crashFiles]; } @@ -147,7 +158,7 @@ - (BOOL)checkExistenceOfAtLeastOnceFileInArray:(NSArray *)files { } - (void)enumerateSymbolicatableFilesInContent:(void (^)(NSString *path))block { - for (NSString *fileName in [self crashFilenames]) { + for (NSString *fileName in [FIRCLSInternalReport crashFileNames]) { NSString *path = [self pathForContentFile:fileName]; block(path); diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.h index 5e7dcae..f45b45f 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.h @@ -89,7 +89,7 @@ NS_ASSUME_NONNULL_BEGIN /** * When this is false, Crashlytics will not start up */ -@property(nonatomic, readonly) BOOL crashReportingEnabled; +@property(nonatomic, readonly) BOOL collectReportsEnabled; /** * When this is false, Crashlytics will not collect non-fatal errors and errors @@ -102,6 +102,11 @@ NS_ASSUME_NONNULL_BEGIN */ @property(nonatomic, readonly) BOOL customExceptionsEnabled; +/** + * Determine if the SDK should use the new endpoint for uploading reports + */ +@property(nonatomic, readonly) BOOL shouldUseNewReportEndpoint; + /** * Returns the maximum number of custom exception events that will be * recorded in a session. diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.m index f7ee006..7d1347f 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.m @@ -29,6 +29,7 @@ NSString *const CreatedAtKey = @"created_at"; NSString *const GoogleAppIDKey = @"google_app_id"; NSString *const BuildInstanceID = @"build_instance_id"; +NSString *const AppVersion = @"app_version"; @interface FIRCLSSettings () @@ -65,7 +66,8 @@ - (void)reloadFromCacheWithGoogleAppID:(NSString *)googleAppID currentTimestamp:(NSTimeInterval)currentTimestamp { NSString *settingsFilePath = self.fileManager.settingsFilePath; - NSData *data = [NSData dataWithContentsOfFile:settingsFilePath]; + NSData *data = [self.fileManager dataWithContentsOfFile:settingsFilePath]; + if (!data) { FIRCLSDebugLog(@"[Crashlytics:Settings] No settings were cached"); @@ -120,6 +122,15 @@ - (void)reloadFromCacheWithGoogleAppID:(NSString *)googleAppID self.isCacheKeyExpired = YES; } } + + NSString *cacheAppVersion = cacheKey[AppVersion]; + if (![cacheAppVersion isEqualToString:self.appIDModel.synthesizedVersion]) { + FIRCLSDebugLog(@"[Crashlytics:Settings] Settings expired because app version changed"); + + @synchronized(self) { + self.isCacheKeyExpired = YES; + } + } } - (void)cacheSettingsWithGoogleAppID:(NSString *)googleAppID @@ -129,6 +140,7 @@ - (void)cacheSettingsWithGoogleAppID:(NSString *)googleAppID CreatedAtKey : createdAtTimestamp, GoogleAppIDKey : googleAppID, BuildInstanceID : self.appIDModel.buildInstanceID, + AppVersion : self.appIDModel.synthesizedVersion, }; NSError *error = nil; @@ -162,7 +174,8 @@ - (void)cacheSettingsWithGoogleAppID:(NSString *)googleAppID #pragma mark - Convenience Methods - (NSDictionary *)loadCacheKey { - NSData *cacheKeyData = [NSData dataWithContentsOfFile:self.fileManager.settingsCacheKeyPath]; + NSData *cacheKeyData = + [self.fileManager dataWithContentsOfFile:self.fileManager.settingsCacheKeyPath]; if (!cacheKeyData) { return nil; @@ -280,7 +293,7 @@ - (BOOL)customExceptionsEnabled { return [self errorReportingEnabled]; } -- (BOOL)crashReportingEnabled { +- (BOOL)collectReportsEnabled { NSNumber *value = [self featuresSettings][@"collect_reports"]; if (value != nil) { @@ -290,6 +303,21 @@ - (BOOL)crashReportingEnabled { return YES; } +- (BOOL)shouldUseNewReportEndpoint { + NSNumber *value = [self appSettings][@"report_upload_variant"]; + + // Default to use the new endpoint when settings were not successfully fetched + // or there's an unexpected issue + if (value == nil) { + return YES; + } + + // 0 - Unknown + // 1 - Legacy + // 2 - New + return value.intValue == 2; +} + #pragma mark - Optional Limit Overrides - (uint32_t)errorLogBufferSize { diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSStackFrame.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSStackFrame.m deleted file mode 100644 index 8227e4f..0000000 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSStackFrame.m +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2019 Google -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#import "FIRCLSStackFrame.h" - -@implementation FIRCLSStackFrame - -+ (instancetype)stackFrame { - return [[self alloc] init]; -} - -+ (instancetype)stackFrameWithAddress:(NSUInteger)address { - FIRCLSStackFrame* frame = [self stackFrame]; - - [frame setAddress:address]; - - return frame; -} - -+ (instancetype)stackFrameWithSymbol:(NSString*)symbol { - FIRCLSStackFrame* frame = [self stackFrame]; - - frame.symbol = symbol; - frame.rawSymbol = symbol; - - return frame; -} - -- (NSString*)description { - if ([self fileName]) { - return [NSString stringWithFormat:@"{[0x%llx] %@ - %@:%u}", [self address], [self fileName], - [self symbol], [self lineNumber]]; - } - - return [NSString - stringWithFormat:@"{[0x%llx + %u] %@}", [self address], [self lineNumber], [self symbol]]; -} - -@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.h index 85adc85..a18e604 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.h @@ -14,13 +14,13 @@ #import -@class FIRCLSStackFrame; +@class FIRStackFrame; @interface FIRCLSSymbolResolver : NSObject - (BOOL)loadBinaryImagesFromFile:(NSString *)path; -- (FIRCLSStackFrame *)frameForAddress:(uint64_t)address; -- (BOOL)updateStackFrame:(FIRCLSStackFrame *)frame; +- (FIRStackFrame *)frameForAddress:(uint64_t)address; +- (BOOL)updateStackFrame:(FIRStackFrame *)frame; @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.m index a96dd70..522a14e 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.m @@ -19,7 +19,7 @@ #include "FIRCLSBinaryImage.h" #include "FIRCLSFile.h" #import "FIRCLSLogger.h" -#import "FIRCLSStackFrame.h" +#import "FIRStackFrame_Private.h" @interface FIRCLSSymbolResolver () { NSMutableArray* _binaryImages; @@ -107,8 +107,8 @@ - (BOOL)fillInImageDetails:(FIRCLSBinaryImageDetails*)details forUUID:(NSString* return FIRCLSBinaryImageFindImageForUUID([uuid UTF8String], details); } -- (FIRCLSStackFrame*)frameForAddress:(uint64_t)address { - FIRCLSStackFrame* frame = [FIRCLSStackFrame stackFrameWithAddress:(NSUInteger)address]; +- (FIRStackFrame*)frameForAddress:(uint64_t)address { + FIRStackFrame* frame = [FIRStackFrame stackFrameWithAddress:(NSUInteger)address]; if (![self updateStackFrame:frame]) { return nil; @@ -117,7 +117,7 @@ - (FIRCLSStackFrame*)frameForAddress:(uint64_t)address { return frame; } -- (BOOL)updateStackFrame:(FIRCLSStackFrame*)frame { +- (BOOL)updateStackFrame:(FIRStackFrame*)frame { uint64_t address = [frame address]; if (address == 0) { return NO; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.h new file mode 100644 index 0000000..d17bdce --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.h @@ -0,0 +1,24 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSRecordBase.h" + +@interface FIRCLSRecordApplication : FIRCLSRecordBase + +@property(nonatomic, copy) NSString *build_version; +@property(nonatomic, copy) NSString *display_version; + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.m new file mode 100644 index 0000000..f587e10 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.m @@ -0,0 +1,30 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSRecordApplication.h" + +@implementation FIRCLSRecordApplication + +- (instancetype)initWithDict:(NSDictionary *)dict { + self = [super initWithDict:dict]; + if (self) { + _display_version = dict[@"display_version"]; + _build_version = dict[@"build_version"]; + } + return self; +} + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.h new file mode 100644 index 0000000..a3cb6e2 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.h @@ -0,0 +1,37 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +/** + * This is the base class to represent the data in the persisted crash (.clsrecord) files. + * The properties these subclasses are nullable on purpose. If there is an issue reading values + * from the crash files, continue as if those fields are optional so a report can still be uploaded. + * That way the issue can potentially be monitored through the backend. + **/ +@interface FIRCLSRecordBase : NSObject + +/** + * Mark the default initializer as unavailable so the subclasses do not have to add the same line + **/ +- (instancetype)init NS_UNAVAILABLE; + +/** + * All subclasses should define an initializer taking in a dictionary + **/ +- (instancetype)initWithDict:(NSDictionary *)dict; + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.m new file mode 100644 index 0000000..7d591f5 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.m @@ -0,0 +1,25 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSRecordBase.h" + +@implementation FIRCLSRecordBase + +- (instancetype)initWithDict:(NSDictionary *)dict { + return [super init]; +} + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.h new file mode 100644 index 0000000..652d283 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.h @@ -0,0 +1,23 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSRecordBase.h" + +@interface FIRCLSRecordHost : FIRCLSRecordBase + +@property(nonatomic, copy) NSString *platform; + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.m new file mode 100644 index 0000000..67184ae --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.m @@ -0,0 +1,29 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSRecordHost.h" + +@implementation FIRCLSRecordHost + +- (instancetype)initWithDict:(NSDictionary *)dict { + self = [super initWithDict:dict]; + if (self) { + _platform = dict[@"platform"]; + } + return self; +} + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.h new file mode 100644 index 0000000..9f13fdd --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.h @@ -0,0 +1,24 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSRecordBase.h" + +@interface FIRCLSRecordIdentity : FIRCLSRecordBase + +@property(nonatomic, copy) NSString *build_version; +@property(nonatomic, copy) NSString *install_id; + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.m new file mode 100644 index 0000000..b4b547e --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.m @@ -0,0 +1,30 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSRecordIdentity.h" + +@implementation FIRCLSRecordIdentity + +- (instancetype)initWithDict:(NSDictionary *)dict { + self = [super initWithDict:dict]; + if (self) { + _build_version = dict[@"build_version"]; + _install_id = dict[@"install_id"]; + } + return self; +} + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.h new file mode 100644 index 0000000..eea8948 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.h @@ -0,0 +1,33 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#include "crashlytics.nanopb.h" + +#import + +/// This class is responsible for reading the persisted crash reports from disk and converting them +/// the information into the nanopb model to be used with GoogleDataTransport +@interface FIRCLSReportAdapter : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/// Initializer +/// @param folderPath Path where the persisted crash files reside +- (instancetype)initWithPath:(NSString *)folderPath googleAppId:(NSString *)googleAppID; + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.m new file mode 100644 index 0000000..3c74691 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.m @@ -0,0 +1,250 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSReportAdapter.h" +#import "FIRCLSReportAdapter_Private.h" + +#import "FIRCLSInternalReport.h" +#import "FIRCLSLogger.h" + +#import "FIRCLSUserLogging.h" + +#import +#import +#import + +@implementation FIRCLSReportAdapter + +- (instancetype)initWithPath:(NSString *)folderPath googleAppId:(NSString *)googleAppID { + self = [super init]; + if (self) { + _folderPath = folderPath; + _googleAppID = googleAppID; + + [self loadMetaDataFile]; + + _report = [self protoReport]; + } + return self; +} + +- (void)dealloc { + pb_release(google_crashlytics_Report_fields, &_report); +} + +// +// MARK: Load from persisted crash files +// + +/// Reads from metadata.clsrecord +- (void)loadMetaDataFile { + NSString *path = [self.folderPath stringByAppendingPathComponent:FIRCLSReportMetadataFile]; + NSDictionary *dict = [FIRCLSReportAdapter combinedDictionariesFromFilePath:path]; + + self.identity = [[FIRCLSRecordIdentity alloc] initWithDict:dict[@"identity"]]; + self.host = [[FIRCLSRecordHost alloc] initWithDict:dict[@"host"]]; + self.application = [[FIRCLSRecordApplication alloc] initWithDict:dict[@"application"]]; +} + +/// Return the persisted crash file as a combined dictionary that way lookups can occur with a key +/// (to avoid ordering dependency) +/// @param filePath Persisted crash file path ++ (NSDictionary *)combinedDictionariesFromFilePath:(NSString *)filePath { + NSMutableDictionary *joinedDict = [[NSMutableDictionary alloc] init]; + for (NSDictionary *dict in [self dictionariesFromEachLineOfFile:filePath]) { + [joinedDict addEntriesFromDictionary:dict]; + } + return joinedDict; +} + +/// The persisted crash files contains JSON on separate lines. Read each line and return the JSON +/// data as a dictionary. +/// @param filePath Persisted crash file path ++ (NSArray *)dictionariesFromEachLineOfFile:(NSString *)filePath { + NSString *content = [[NSString alloc] initWithContentsOfFile:filePath + encoding:NSUTF8StringEncoding + error:nil]; + NSArray *lines = + [content componentsSeparatedByCharactersInSet:NSCharacterSet.newlineCharacterSet]; + + NSMutableArray *array = [[NSMutableArray alloc] init]; + + int lineNum = 0; + for (NSString *line in lines) { + lineNum++; + + if (line.length == 0) { + // Likely newline at the end of the file + continue; + } + + NSError *error; + NSDictionary *dict = + [NSJSONSerialization JSONObjectWithData:[line dataUsingEncoding:NSUTF8StringEncoding] + options:0 + error:&error]; + + if (error) { + FIRCLSErrorLog(@"Failed to read JSON from file (%@) line (%d) with error: %@", filePath, + lineNum, error); + } else { + [array addObject:dict]; + } + } + + return array; +} + +// +// MARK: GDTCOREventDataObject +// + +- (NSData *)transportBytes { + pb_ostream_t sizestream = PB_OSTREAM_SIZING; + + // Encode 1 time to determine the size. + if (!pb_encode(&sizestream, google_crashlytics_Report_fields, &_report)) { + FIRCLSErrorLog(@"Error in nanopb encoding for size: %s", PB_GET_ERROR(&sizestream)); + } + + // Encode a 2nd time to actually get the bytes from it. + size_t bufferSize = sizestream.bytes_written; + CFMutableDataRef dataRef = CFDataCreateMutable(CFAllocatorGetDefault(), bufferSize); + CFDataSetLength(dataRef, bufferSize); + pb_ostream_t ostream = pb_ostream_from_buffer((void *)CFDataGetBytePtr(dataRef), bufferSize); + if (!pb_encode(&ostream, google_crashlytics_Report_fields, &_report)) { + FIRCLSErrorLog(@"Error in nanopb encoding for bytes: %s", PB_GET_ERROR(&ostream)); + } + + return CFBridgingRelease(dataRef); +} + +// +// MARK: NanoPB conversions +// + +- (google_crashlytics_Report)protoReport { + google_crashlytics_Report report = google_crashlytics_Report_init_default; + report.sdk_version = FIRCLSEncodeString(self.identity.build_version); + report.gmp_app_id = FIRCLSEncodeString(self.googleAppID); + report.platform = [self protoPlatformFromString:self.host.platform]; + report.installation_uuid = FIRCLSEncodeString(self.identity.install_id); + report.build_version = FIRCLSEncodeString(self.application.build_version); + report.display_version = FIRCLSEncodeString(self.application.display_version); + report.apple_payload = [self protoFilesPayload]; + return report; +} + +- (google_crashlytics_FilesPayload)protoFilesPayload { + google_crashlytics_FilesPayload apple_payload = google_crashlytics_FilesPayload_init_default; + + NSArray *clsRecords = [self clsRecordFilePaths]; + google_crashlytics_FilesPayload_File *files = + malloc(sizeof(google_crashlytics_FilesPayload_File) * clsRecords.count); + + if (files == NULL) { + // files and files_count are initialized to NULL and 0 by default. + return apple_payload; + } + for (NSUInteger i = 0; i < clsRecords.count; i++) { + google_crashlytics_FilesPayload_File file = google_crashlytics_FilesPayload_File_init_default; + file.filename = FIRCLSEncodeString(clsRecords[i].lastPathComponent); + + NSError *error; + file.contents = FIRCLSEncodeData([NSData dataWithContentsOfFile:clsRecords[i] + options:0 + error:&error]); + if (error) { + FIRCLSErrorLog(@"Failed to read from %@ with error: %@", clsRecords[i], error); + } + + files[i] = file; + } + + apple_payload.files = files; + apple_payload.files_count = (pb_size_t)clsRecords.count; + + return apple_payload; +} + +- (NSArray *)clsRecordFilePaths { + NSMutableArray *clsRecords = [[NSMutableArray alloc] init]; + + NSError *error; + NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:self.folderPath + error:&error]; + + if (error) { + FIRCLSErrorLog(@"Failed to find .clsrecords from %@ with error: %@", self.folderPath, error); + return clsRecords; + } + + [files enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + NSString *filename = (NSString *)obj; + NSString *lowerExtension = filename.pathExtension.lowercaseString; + if ([lowerExtension isEqualToString:@"clsrecord"] || + [lowerExtension isEqualToString:@"symbolicated"]) { + [clsRecords addObject:[self.folderPath stringByAppendingPathComponent:filename]]; + } + }]; + + return [clsRecords sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; +} + +- (google_crashlytics_Platforms)protoPlatformFromString:(NSString *)str { + NSString *platform = str.lowercaseString; + + if ([platform isEqualToString:@"ios"]) { + return google_crashlytics_Platforms_IOS; + } else if ([platform isEqualToString:@"mac"]) { + return google_crashlytics_Platforms_MAC_OS_X; + } else if ([platform isEqualToString:@"tvos"]) { + return google_crashlytics_Platforms_TVOS; + } else { + return google_crashlytics_Platforms_UNKNOWN_PLATFORM; + } +} + +/** Mallocs a pb_bytes_array and copies the given NSString's bytes into the bytes array. + * @note Memory needs to be freed manually, through pb_free or pb_release. + * @param string The string to encode as pb_bytes. + */ +pb_bytes_array_t *FIRCLSEncodeString(NSString *string) { + if ([string isMemberOfClass:[NSNull class]]) { + FIRCLSErrorLog(@"Expected encodable string, but found NSNull instead. " + @"Set a symbolic breakpoint at FIRCLSEncodeString to debug."); + string = nil; + } + NSString *stringToEncode = string ? string : @""; + NSData *stringBytes = [stringToEncode dataUsingEncoding:NSUTF8StringEncoding]; + return FIRCLSEncodeData(stringBytes); +} + +/** Mallocs a pb_bytes_array and copies the given NSData bytes into the bytes array. + * @note Memory needs to be free manually, through pb_free or pb_release. + * @param data The data to copy into the new bytes array. + */ +pb_bytes_array_t *FIRCLSEncodeData(NSData *data) { + pb_bytes_array_t *pbBytes = malloc(PB_BYTES_ARRAY_T_ALLOCSIZE(data.length)); + if (pbBytes == NULL) { + return NULL; + } + memcpy(pbBytes->bytes, [data bytes], data.length); + pbBytes->size = (pb_size_t)data.length; + return pbBytes; +} + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter_Private.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter_Private.h new file mode 100644 index 0000000..e9f2c16 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter_Private.h @@ -0,0 +1,43 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRCLSReportAdapter.h" + +#import "FIRCLSRecordApplication.h" +#import "FIRCLSRecordHost.h" +#import "FIRCLSRecordIdentity.h" + +pb_bytes_array_t *FIRCLSEncodeString(NSString *string); +pb_bytes_array_t *FIRCLSEncodeData(NSData *data); + +@interface FIRCLSReportAdapter () + +@property(nonatomic, readonly) BOOL hasCrashed; + +@property(nonatomic, strong) NSString *folderPath; +@property(nonatomic, strong) NSString *googleAppID; + +// From metadata.clsrecord +@property(nonatomic, strong) FIRCLSRecordIdentity *identity; +@property(nonatomic, strong) FIRCLSRecordHost *host; +@property(nonatomic, strong) FIRCLSRecordApplication *application; + +@property(nonatomic) google_crashlytics_Report report; + +- (google_crashlytics_Report)protoReport; +- (NSArray *)clsRecordFilePaths; + +@end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.m index d67ca56..aaf4c2a 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.m @@ -97,7 +97,7 @@ - (NSString *)reportPath { } - (NSString *)destinationDirectory { - return [self.fileManager preparedPath]; + return [self.fileManager legacyPreparedPath]; } - (NSString *)packagedPathWithName:(NSString *)name { diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.m index 3c5ab8a..12ce601 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.m @@ -18,9 +18,9 @@ #import "FIRCLSFile.h" #import "FIRCLSInternalReport.h" #import "FIRCLSSerializeSymbolicatedFramesOperation.h" -#import "FIRCLSStackFrame.h" #import "FIRCLSSymbolResolver.h" #import "FIRCLSSymbolicationOperation.h" +#import "FIRStackFrame_Private.h" @implementation FIRCLSProcessReportOperation @@ -64,7 +64,7 @@ - (NSArray *)threadArrayFromFile:(NSString *)path { NSMutableArray *frameArray = [NSMutableArray array]; for (NSNumber *pc in [threadDetails objectForKey:@"stacktrace"]) { - FIRCLSStackFrame *frame = [FIRCLSStackFrame stackFrameWithAddress:[pc unsignedIntegerValue]]; + FIRStackFrame *frame = [FIRStackFrame stackFrameWithAddress:[pc unsignedIntegerValue]]; [frameArray addObject:frame]; } diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.mm b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.mm index 182f7a0..364a6ed 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.mm +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.mm @@ -13,7 +13,7 @@ // limitations under the License. #include "FIRCLSDemangleOperation.h" -#include "FIRCLSStackFrame.h" +#include "FIRStackFrame_Private.h" #import @@ -84,7 +84,7 @@ - (NSString *)demangleSymbol:(const char *)symbol { } - (void)main { - [self enumerateFramesWithBlock:^(FIRCLSStackFrame *frame) { + [self enumerateFramesWithBlock:^(FIRStackFrame *frame) { NSString *demangedSymbol = [self demangleSymbol:[[frame rawSymbol] UTF8String]]; if (demangedSymbol) { diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.m index 6b2b79b..b8701d2 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.m @@ -16,7 +16,7 @@ #import "FIRCLSFile.h" #import "FIRCLSLogger.h" -#import "FIRCLSStackFrame.h" +#import "FIRStackFrame_Private.h" @implementation FIRCLSSerializeSymbolicatedFramesOperation @@ -37,7 +37,7 @@ - (void)main { for (NSArray *frameArray in self.threadArray) { FIRCLSFileWriteArrayStart(&file); - for (FIRCLSStackFrame *frame in frameArray) { + for (FIRStackFrame *frame in frameArray) { FIRCLSFileWriteHashStart(&file); FIRCLSFileWriteHashEntryString(&file, "symbol", [[frame symbol] UTF8String]); diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.m index e2988b2..d15005b 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.m @@ -14,13 +14,12 @@ #import "FIRCLSSymbolicationOperation.h" -#import "FIRCLSStackFrame.h" #import "FIRCLSSymbolResolver.h" @implementation FIRCLSSymbolicationOperation - (void)main { - [self enumerateFramesWithBlock:^(FIRCLSStackFrame *frame) { + [self enumerateFramesWithBlock:^(FIRStackFrame *frame) { [self.symbolResolver updateStackFrame:frame]; }]; } diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.h index e223523..0c2a1df 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.h @@ -14,12 +14,12 @@ #import -@class FIRCLSStackFrame; +@class FIRStackFrame; @interface FIRCLSThreadArrayOperation : NSOperation @property(nonatomic, strong) NSArray *threadArray; -- (void)enumerateFramesWithBlock:(void (^)(FIRCLSStackFrame *frame))block; +- (void)enumerateFramesWithBlock:(void (^)(FIRStackFrame *frame))block; @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.m index 96c7327..3f7509e 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.m @@ -14,13 +14,11 @@ #import "FIRCLSThreadArrayOperation.h" -#import "FIRCLSStackFrame.h" - @implementation FIRCLSThreadArrayOperation -- (void)enumerateFramesWithBlock:(void (^)(FIRCLSStackFrame *frame))block { +- (void)enumerateFramesWithBlock:(void (^)(FIRStackFrame *frame))block { for (NSArray *frameArray in self.threadArray) { - for (FIRCLSStackFrame *frame in frameArray) { + for (FIRStackFrame *frame in frameArray) { block(frame); if ([self isCancelled]) { diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRExceptionModel_Private.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRExceptionModel_Private.h new file mode 100644 index 0000000..7cd161a --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRExceptionModel_Private.h @@ -0,0 +1,33 @@ +// Copyright 2020 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef FIRExceptionModel_Private_h +#define FIRExceptionModel_Private_h + +#import + +#import "FIRExceptionModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRExceptionModel (Private) + +@property(nonatomic, copy) NSString *name; +@property(nonatomic, copy) NSString *reason; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* FIRExceptionModel_Private_h */ diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSStackFrame.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRStackFrame_Private.h similarity index 69% rename from Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSStackFrame.h rename to Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRStackFrame_Private.h index 24ef1cc..d4c0a44 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSStackFrame.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRStackFrame_Private.h @@ -1,4 +1,4 @@ -// Copyright 2019 Google +// Copyright 2020 Google // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,18 +14,18 @@ #import +#import "FIRStackFrame.h" + NS_ASSUME_NONNULL_BEGIN /** - * - * This class is used in conjunction with -[Crashlytics - * recordCustomExceptionName:reason:frameArray:] to record information about non-ObjC/C++ - * exceptions. All information included here will be displayed in the Crashlytics UI, and can - * influence crash grouping. Be particularly careful with the use of the address property. If set, - * Crashlytics will attempt symbolication and could overwrite other properities in the process. - * + * This class is used in conjunction with recordExceptionModel to record information about + * non-ObjC/C++ exceptions. All information included here will be displayed in the Crashlytics UI, + * and can influence crash grouping. Be particularly careful with the use of the address property. + *If set, Crashlytics will attempt symbolication and could overwrite other properities in the + *process. **/ -@interface FIRCLSStackFrame : NSObject +@interface FIRStackFrame (Private) + (instancetype)stackFrame; + (instancetype)stackFrameWithAddress:(NSUInteger)address; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRCrashlytics.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRCrashlytics.h index c78a592..9f65153 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRCrashlytics.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRCrashlytics.h @@ -14,6 +14,8 @@ #import +#import "FIRExceptionModel.h" + #if __has_include() #warning "FirebaseCrashlytics and Crashlytics are not compatible \ in the same app because including multiple crash reporters can \ @@ -95,7 +97,6 @@ NS_SWIFT_NAME(Crashlytics) - (void)setUserID:(NSString *)userID; /** - * * Records a non-fatal event described by an NSError object. The events are * grouped and displayed similarly to crashes. Keep in mind that this method can be expensive. * The total number of NSErrors that can be recorded during your app's life-cycle is limited by a @@ -106,6 +107,18 @@ NS_SWIFT_NAME(Crashlytics) */ - (void)recordError:(NSError *)error NS_SWIFT_NAME(record(error:)); +/** + * Records an Exception Model described by an FIRExceptionModel object. The events are + * grouped and displayed similarly to crashes. Keep in mind that this method can be expensive. + * The total number of FIRExceptionModels that can be recorded during your app's life-cycle is + * limited by a fixed-size circular buffer. If the buffer is overrun, the oldest data is dropped. + * Exception Models are relayed to Crashlytics on a subsequent launch of your application. + * + * @param exceptionModel Instance of the FIRExceptionModel to be recorded + */ +- (void)recordExceptionModel:(FIRExceptionModel *)exceptionModel + NS_SWIFT_NAME(record(exceptionModel:)); + /** * Returns whether the app crashed during the previous execution. */ diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRExceptionModel.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRExceptionModel.h new file mode 100644 index 0000000..a0ee157 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRExceptionModel.h @@ -0,0 +1,57 @@ +// Copyright 2020 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +#import "FIRStackFrame.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * The Firebase Crashlytics Exception Model provides a way to report custom exceptions + * to Crashlytics that came from a runtime environment outside of the native + * platform Crashlytics is running in. + */ +NS_SWIFT_NAME(ExceptionModel) +@interface FIRExceptionModel : NSObject + +/** :nodoc: */ +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializes an Exception Model model with the given required fields. + * + * @param name - typically the type of the Exception class + * @param reason - the human-readable reason the issue occurred + */ +- (instancetype)initWithName:(NSString *)name reason:(NSString *)reason; + +/** + * Creates an Exception Model model with the given required fields. + * + * @param name - typically the type of the Exception class + * @param reason - the human-readable reason the issue occurred + */ ++ (instancetype)exceptionModelWithName:(NSString *)name + reason:(NSString *)reason NS_SWIFT_UNAVAILABLE(""); + +/** + * A list of Stack Frames that make up the stack trace. The order of the stack trace is top-first, + * so typically the "main" function is the last element in this list. + */ +@property(nonatomic, copy) NSArray *stackTrace; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRStackFrame.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRStackFrame.h new file mode 100644 index 0000000..ef9746f --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FIRStackFrame.h @@ -0,0 +1,53 @@ +// Copyright 2020 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * The Firebase Crashlytics Stack Frame provides a way to construct the lines of + * a stack trace for reporting along with a recorded Exception Model. + */ +NS_SWIFT_NAME(StackFrame) +@interface FIRStackFrame : NSObject + +/** :nodoc: */ +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializes a symbolicated Stack Frame with the given required fields. Symbolicated + * Stack Frames will appear in the Crashlytics dashboard as reported in these fields. + * + * @param symbol - The function or method name + * @param file - the file where the exception occurred + * @param line - the line number + */ +- (instancetype)initWithSymbol:(NSString *)symbol file:(NSString *)file line:(NSInteger)line; + +/** + * Creates a symbolicated Stack Frame with the given required fields. Symbolicated + * Stack Frames will appear in the Crashlytics dashboard as reported in these fields. * + * + * @param symbol - The function or method name + * @param file - the file where the exception occurred + * @param line - the line number + */ ++ (instancetype)stackFrameWithSymbol:(NSString *)symbol + file:(NSString *)file + line:(NSInteger)line NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics.h index d85680b..9022811 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics.h @@ -15,3 +15,5 @@ */ #import "FIRCrashlytics.h" +#import "FIRExceptionModel.h" +#import "FIRStackFrame.h" diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.h index 252414f..2708d09 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.h @@ -51,7 +51,8 @@ NS_ASSUME_NONNULL_BEGIN * @param token (required) Data collection token signifying we can make network calls */ - (void)beginSettingsAndOnboardingWithGoogleAppId:(NSString *)googleAppID - token:(FIRCLSDataCollectionToken *)token; + token:(FIRCLSDataCollectionToken *)token + waitForCompletion:(BOOL)waitForCompletion; @end diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.m index d0f017e..c820d2d 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.m @@ -73,7 +73,8 @@ - (instancetype)initWithAppIDModel:(FIRCLSApplicationIdentifierModel *)appIDMode } - (void)beginSettingsAndOnboardingWithGoogleAppId:(NSString *)googleAppID - token:(FIRCLSDataCollectionToken *)token { + token:(FIRCLSDataCollectionToken *)token + waitForCompletion:(BOOL)waitForCompletion { NSParameterAssert(googleAppID); self.googleAppID = googleAppID; @@ -86,7 +87,7 @@ - (void)beginSettingsAndOnboardingWithGoogleAppId:(NSString *)googleAppID FIRCLSApplicationGetSDKBundleID() : @CLS_SDK_DISPLAY_VERSION, }; - [self beginSettingsDownload:token]; + [self beginSettingsDownload:token waitForCompletion:waitForCompletion]; } #pragma mark Helper methods @@ -97,7 +98,10 @@ - (void)beginSettingsAndOnboardingWithGoogleAppId:(NSString *)googleAppID * to the server. If the onboarding request fails, the error is handled silently(with a log * statement). */ -- (void)beginSettingsDownload:(FIRCLSDataCollectionToken *)token { +- (void)beginSettingsDownload:(FIRCLSDataCollectionToken *)token + waitForCompletion:(BOOL)waitForCompletion { + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + FIRCLSDownloadAndSaveSettingsOperation *operation = nil; operation = [[FIRCLSDownloadAndSaveSettingsOperation alloc] initWithGoogleAppID:self.googleAppID @@ -109,7 +113,17 @@ - (void)beginSettingsDownload:(FIRCLSDataCollectionToken *)token { networkClient:self.networkClient token:token]; + if (waitForCompletion) { + operation.asyncCompletion = ^(NSError *error) { + dispatch_semaphore_signal(semaphore); + }; + } + [operation startWithToken:token]; + + if (waitForCompletion) { + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + } } - (void)beginOnboarding:(BOOL)appCreate @@ -148,7 +162,7 @@ - (void)onboardingOperation:(FIRCLSOnboardingOperation *)operation FIRCLSDebugLog(@"Completed configure"); // now, go get settings, as they can change (and it completes the onboarding process) - [self beginSettingsDownload:operation.token]; + [self beginSettingsDownload:operation.token waitForCompletion:NO]; } - (void)onboardingOperation:(FIRCLSOnboardingOperation *)operation diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.h index b229e69..3bc7563 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.h @@ -34,6 +34,13 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly, nullable) NSString* platform; @property(nonatomic, readonly, nullable) NSString* buildVersion; @property(nonatomic, readonly, nullable) NSString* displayVersion; + +/** + * Returns the synthesized app version, similar to how the backend does it + * () + */ +@property(nonatomic, readonly, nullable) NSString* synthesizedVersion; + @property(nonatomic, readonly) FIRCLSApplicationInstallationSourceType installSource; /** diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.m index 81a8631..3429df4 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.m @@ -66,6 +66,10 @@ - (NSString *)displayVersion { return FIRCLSApplicationGetShortBundleVersion(); } +- (NSString *)synthesizedVersion { + return [NSString stringWithFormat:@"%@ (%@)", self.displayVersion, self.buildVersion]; +} + - (FIRCLSApplicationInstallationSourceType)installSource { return FIRCLSApplicationInstallationSource(); } diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.m b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.m index 5f556b7..ce2e58b 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.m @@ -164,7 +164,7 @@ - (NSError *)errorForCode:(NSUInteger)code userInfo:(NSDictionary *)userInfo { } - (NSURL *)appCreateURL { - // https://api.crashlytics.com/spi/v1/platforms/mac/apps/com.crashlytics.mac + // https://update.crashlytics.com/spi/v1/platforms/mac/apps/com.crashlytics.mac FIRCLSURLBuilder *url = [FIRCLSURLBuilder URLWithBase:self.appEndpoint]; @@ -176,7 +176,7 @@ - (NSURL *)appCreateURL { } - (NSURL *)appUpdateURL { - // https://api.crashlytics.com/spi/v1/platforms/mac/apps/com.crashlytics.mac + // https://update.crashlytics.com/spi/v1/platforms/mac/apps/com.crashlytics.mac FIRCLSURLBuilder *url = [FIRCLSURLBuilder URLWithBase:[self appEndpoint]]; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.h index 3701e35..1698e75 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.h @@ -14,12 +14,12 @@ #pragma once -#include "FIRCLSFeatures.h" -#include "FIRCLSThreadState.h" - #include #include +#include "FIRCLSFeatures.h" +#include "FIRCLSThreadState.h" + // We have to pack the arrays defined in this header, so // we can reason about pointer math. #pragma pack(push) diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.h index 44c8a28..8a6e966 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.h @@ -14,10 +14,10 @@ #pragma once -#include "FIRCLSFeatures.h" - #include +#include "FIRCLSFeatures.h" + #if CLS_DWARF_UNWINDING_SUPPORTED #if CLS_CPU_64BIT diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.h index c7307fd..bbb2880 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.h @@ -14,13 +14,13 @@ #pragma once -#include "FIRCLSDwarfUnwindRegisters.h" -#include "FIRCLSThreadState.h" - #include #include #include +#include "FIRCLSDwarfUnwindRegisters.h" +#include "FIRCLSThreadState.h" + #if CLS_DWARF_UNWINDING_SUPPORTED #pragma mark Structures diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.h index 08b23ea..a92a287 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.h @@ -19,11 +19,11 @@ #if CLS_COMPACT_UNWINDING_SUPPORTED #include "FIRCLSCompactUnwind.h" #endif -#include "FIRCLSUnwind_arch.h" - #include #include +#include "FIRCLSUnwind_arch.h" + extern const uint32_t FIRCLSUnwindMaxFrames; extern const uint32_t FIRCLSUnwindInfiniteRecursionCountThreshold; diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arch.h b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arch.h index dc5e296..3accd40 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arch.h +++ b/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arch.h @@ -15,7 +15,6 @@ #pragma once #include "FIRCLSFeatures.h" - #include "FIRCLSThreadState.h" #if CLS_COMPACT_UNWINDING_SUPPORTED #include "FIRCLSCompactUnwind.h" diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.c b/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.c new file mode 100644 index 0000000..d2e9d04 --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.c @@ -0,0 +1,75 @@ +/* + * Copyright 2019 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.3.9.5 */ + +#include "crashlytics.nanopb.h" + +/* @@protoc_insertion_point(includes) */ +#if PB_PROTO_HEADER_VERSION != 30 +#error Regenerate this file with the current version of nanopb generator. +#endif + + + +const pb_field_t google_crashlytics_Report_fields[8] = { + PB_FIELD( 1, BYTES , SINGULAR, POINTER , FIRST, google_crashlytics_Report, sdk_version, sdk_version, 0), + PB_FIELD( 3, BYTES , SINGULAR, POINTER , OTHER, google_crashlytics_Report, gmp_app_id, sdk_version, 0), + PB_FIELD( 4, UENUM , SINGULAR, STATIC , OTHER, google_crashlytics_Report, platform, gmp_app_id, 0), + PB_FIELD( 5, BYTES , SINGULAR, POINTER , OTHER, google_crashlytics_Report, installation_uuid, platform, 0), + PB_FIELD( 6, BYTES , SINGULAR, POINTER , OTHER, google_crashlytics_Report, build_version, installation_uuid, 0), + PB_FIELD( 7, BYTES , SINGULAR, POINTER , OTHER, google_crashlytics_Report, display_version, build_version, 0), + PB_FIELD( 10, MESSAGE , SINGULAR, STATIC , OTHER, google_crashlytics_Report, apple_payload, display_version, &google_crashlytics_FilesPayload_fields), + PB_LAST_FIELD +}; + +const pb_field_t google_crashlytics_FilesPayload_fields[2] = { + PB_FIELD( 1, MESSAGE , REPEATED, POINTER , FIRST, google_crashlytics_FilesPayload, files, files, &google_crashlytics_FilesPayload_File_fields), + PB_LAST_FIELD +}; + +const pb_field_t google_crashlytics_FilesPayload_File_fields[3] = { + PB_FIELD( 1, BYTES , SINGULAR, POINTER , FIRST, google_crashlytics_FilesPayload_File, filename, filename, 0), + PB_FIELD( 2, BYTES , SINGULAR, POINTER , OTHER, google_crashlytics_FilesPayload_File, contents, filename, 0), + PB_LAST_FIELD +}; + + + +/* Check that field information fits in pb_field_t */ +#if !defined(PB_FIELD_32BIT) +/* If you get an error here, it means that you need to define PB_FIELD_32BIT + * compile-time option. You can do that in pb.h or on compiler command line. + * The reason you need to do this is that some of your messages contain tag + * numbers or field sizes that are larger than what can fit in 8 or 16 bit + * field descriptors. + */ +PB_STATIC_ASSERT((pb_membersize(google_crashlytics_Report, apple_payload) < 65536), YOU_MUST_DEFINE_PB_FIELD_32BIT_FOR_MESSAGES_google_crashlytics_Report_google_crashlytics_FilesPayload_google_crashlytics_FilesPayload_File) +#endif + +#if !defined(PB_FIELD_16BIT) && !defined(PB_FIELD_32BIT) +/* If you get an error here, it means that you need to define PB_FIELD_16BIT + * compile-time option. You can do that in pb.h or on compiler command line. + * The reason you need to do this is that some of your messages contain tag + * numbers or field sizes that are larger than what can fit in the default + * 8 bit descriptors. + */ +PB_STATIC_ASSERT((pb_membersize(google_crashlytics_Report, apple_payload) < 256), YOU_MUST_DEFINE_PB_FIELD_16BIT_FOR_MESSAGES_google_crashlytics_Report_google_crashlytics_FilesPayload_google_crashlytics_FilesPayload_File) +#endif + + +/* @@protoc_insertion_point(eof) */ diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.h b/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.h new file mode 100644 index 0000000..c873fbc --- /dev/null +++ b/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.h @@ -0,0 +1,107 @@ +/* + * Copyright 2019 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.3.9.5 */ + +#ifndef PB_GOOGLE_CRASHLYTICS_CRASHLYTICS_NANOPB_H_INCLUDED +#define PB_GOOGLE_CRASHLYTICS_CRASHLYTICS_NANOPB_H_INCLUDED +#include + +/* @@protoc_insertion_point(includes) */ +#if PB_PROTO_HEADER_VERSION != 30 +#error Regenerate this file with the current version of nanopb generator. +#endif + + +/* Enum definitions */ +typedef enum _google_crashlytics_Platforms { + google_crashlytics_Platforms_UNKNOWN_PLATFORM = 0, + google_crashlytics_Platforms_IOS = 1, + google_crashlytics_Platforms_TVOS = 2, + google_crashlytics_Platforms_MAC_OS_X = 5 +} google_crashlytics_Platforms; +#define _google_crashlytics_Platforms_MIN google_crashlytics_Platforms_UNKNOWN_PLATFORM +#define _google_crashlytics_Platforms_MAX google_crashlytics_Platforms_MAC_OS_X +#define _google_crashlytics_Platforms_ARRAYSIZE ((google_crashlytics_Platforms)(google_crashlytics_Platforms_MAC_OS_X+1)) + +/* Struct definitions */ +typedef struct _google_crashlytics_FilesPayload { + pb_size_t files_count; + struct _google_crashlytics_FilesPayload_File *files; +/* @@protoc_insertion_point(struct:google_crashlytics_FilesPayload) */ +} google_crashlytics_FilesPayload; + +typedef struct _google_crashlytics_FilesPayload_File { + pb_bytes_array_t *filename; + pb_bytes_array_t *contents; +/* @@protoc_insertion_point(struct:google_crashlytics_FilesPayload_File) */ +} google_crashlytics_FilesPayload_File; + +typedef struct _google_crashlytics_Report { + pb_bytes_array_t *sdk_version; + pb_bytes_array_t *gmp_app_id; + google_crashlytics_Platforms platform; + pb_bytes_array_t *installation_uuid; + pb_bytes_array_t *build_version; + pb_bytes_array_t *display_version; + google_crashlytics_FilesPayload apple_payload; +/* @@protoc_insertion_point(struct:google_crashlytics_Report) */ +} google_crashlytics_Report; + +/* Default values for struct fields */ + +/* Initializer values for message structs */ +#define google_crashlytics_Report_init_default {NULL, NULL, _google_crashlytics_Platforms_MIN, NULL, NULL, NULL, google_crashlytics_FilesPayload_init_default} +#define google_crashlytics_FilesPayload_init_default {0, NULL} +#define google_crashlytics_FilesPayload_File_init_default {NULL, NULL} +#define google_crashlytics_Report_init_zero {NULL, NULL, _google_crashlytics_Platforms_MIN, NULL, NULL, NULL, google_crashlytics_FilesPayload_init_zero} +#define google_crashlytics_FilesPayload_init_zero {0, NULL} +#define google_crashlytics_FilesPayload_File_init_zero {NULL, NULL} + +/* Field tags (for use in manual encoding/decoding) */ +#define google_crashlytics_FilesPayload_files_tag 1 +#define google_crashlytics_FilesPayload_File_filename_tag 1 +#define google_crashlytics_FilesPayload_File_contents_tag 2 +#define google_crashlytics_Report_sdk_version_tag 1 +#define google_crashlytics_Report_gmp_app_id_tag 3 +#define google_crashlytics_Report_platform_tag 4 +#define google_crashlytics_Report_installation_uuid_tag 5 +#define google_crashlytics_Report_build_version_tag 6 +#define google_crashlytics_Report_display_version_tag 7 +#define google_crashlytics_Report_apple_payload_tag 10 + +/* Struct field encoding specification for nanopb */ +extern const pb_field_t google_crashlytics_Report_fields[8]; +extern const pb_field_t google_crashlytics_FilesPayload_fields[2]; +extern const pb_field_t google_crashlytics_FilesPayload_File_fields[3]; + +/* Maximum encoded size of messages (where known) */ +/* google_crashlytics_Report_size depends on runtime parameters */ +/* google_crashlytics_FilesPayload_size depends on runtime parameters */ +/* google_crashlytics_FilesPayload_File_size depends on runtime parameters */ + +/* Message IDs (where set with "msgid" option) */ +#ifdef PB_MSGID + +#define CRASHLYTICS_MESSAGES \ + + +#endif + +/* @@protoc_insertion_point(eof) */ + +#endif diff --git a/Pods/FirebaseCrashlytics/Crashlytics/README.md b/Pods/FirebaseCrashlytics/Crashlytics/README.md index a3c0c46..55d36e6 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/README.md +++ b/Pods/FirebaseCrashlytics/Crashlytics/README.md @@ -9,19 +9,31 @@ integration test FirebaseCrashlytics: - At least CocoaPods 1.6.0 - Install [cocoapods-generate](https://github.com/square/cocoapods-generate) +- For nanopb and GDT: + - `brew install protobuf nanopb-generator` + - `easy_install protobuf python` ### To Develop -- Run `pod gen FirebaseCrashlytics.podspec` +- Run `Crashlytics/generate_project.sh` - `open gen/FirebaseCrashlytics/FirebaseCrashlytics.xcworkspace` -OR these two commands can be combined with - -- `pod gen FirebaseCrashlytics.podspec --auto-open --gen-directory="gen" --clean` - You're now in an Xcode workspace generate for building, debugging and testing the FirebaseCrashlytics CocoaPod. ### Running Unit Tests Open the generated workspace, choose the FirebaseCrashlytics-Unit-unit scheme and press Command-u. + +### Changing crash report uploads (using GDT) + +#### Update report proto + +If the crash report proto needs to be updated, follow these instructions: + +- Update `ProtoSupport/Protos/crashlytics.proto` with the new changes +- Depending on the type of fields added/removed, also update `ProtoSupport/Protos/crashlytics.options`. + `CALLBACK` type fields in crashlytics.nanopb.c needs to be changed to `POINTER` + (through the options file). Known field types that require an entry in crashlytics.options are + `strings`, `repeated` and `bytes`. +- Run `generate_project.sh` to update the nanopb .c/.h files. \ No newline at end of file diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSConstants.m b/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSConstants.m index 7dac625..f733f0d 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSConstants.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSConstants.m @@ -30,7 +30,7 @@ // Endpoints NSString* const FIRCLSSettingsEndpoint = @"https://firebase-settings.crashlytics.com"; -NSString* const FIRCLSConfigureEndpoint = @"https://api.crashlytics.com"; +NSString* const FIRCLSConfigureEndpoint = @"https://update.crashlytics.com"; NSString* const FIRCLSReportsEndpoint = @"https://reports.crashlytics.com"; // Network requests diff --git a/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m b/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m index 47f707c..386438c 100644 --- a/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m +++ b/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m @@ -255,6 +255,9 @@ struct FIRCLSMachOSlice FIRCLSMachOSliceGetCurrent(void) { slice.startAddress = NULL; + // This call can fail when Exported Symbols File in Build Settings is missing the symbol value + // defined as _MH_EXECUTE_SYM (if you look in the header the underscored MH_EXECUTE_SYM define is + // there) executableSymbol = dlsym(RTLD_MAIN_ONLY, MH_EXECUTE_SYM); // get the address of the main function diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRAppInternal.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRAppInternal.h new file mode 100644 index 0000000..9a0c943 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRAppInternal.h @@ -0,0 +1,173 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRApp.h" +#else +#import +#endif + +// The has_include is a workaround so the old IID needed for the FIS tests can find FIRErrors.h +#if __has_include("FirebaseCore/Sources/Private/FIRErrors.h") +#import "FirebaseCore/Sources/Private/FIRErrors.h" +#else +#import +#endif + +@class FIRComponentContainer; +@protocol FIRLibrary; + +/** + * The internal interface to FIRApp. This is meant for first-party integrators, who need to receive + * FIRApp notifications, log info about the success or failure of their configuration, and access + * other internal functionality of FIRApp. + * + * TODO(b/28296561): Restructure this header. + */ +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, FIRConfigType) { + FIRConfigTypeCore = 1, + FIRConfigTypeSDK = 2, +}; + +extern NSString *const kFIRDefaultAppName; +extern NSString *const kFIRAppReadyToConfigureSDKNotification; +extern NSString *const kFIRAppDeleteNotification; +extern NSString *const kFIRAppIsDefaultAppKey; +extern NSString *const kFIRAppNameKey; +extern NSString *const kFIRGoogleAppIDKey; + +/** + * The format string for the User Defaults key used for storing the data collection enabled flag. + * This includes formatting to append the Firebase App's name. + */ +extern NSString *const kFIRGlobalAppDataCollectionEnabledDefaultsKeyFormat; + +/** + * The plist key used for storing the data collection enabled flag. + */ +extern NSString *const kFIRGlobalAppDataCollectionEnabledPlistKey; + +/** + * A notification fired containing diagnostic information when SDK errors occur. + */ +extern NSString *const kFIRAppDiagnosticsNotification; + +/** @var FIRAuthStateDidChangeInternalNotification + @brief The name of the @c NSNotificationCenter notification which is posted when the auth state + changes (e.g. a new token has been produced, a user logs in or out). The object parameter of + the notification is a dictionary possibly containing the key: + @c FIRAuthStateDidChangeInternalNotificationTokenKey (the new access token.) If it does not + contain this key it indicates a sign-out event took place. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotification; + +/** @var FIRAuthStateDidChangeInternalNotificationTokenKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the new access token. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationTokenKey; + +/** @var FIRAuthStateDidChangeInternalNotificationAppKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the FIRApp associated with the auth instance. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationAppKey; + +/** @var FIRAuthStateDidChangeInternalNotificationUIDKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the new user's UID (or nil if there is no longer a user signed in). + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationUIDKey; + +@interface FIRApp () + +/** + * A flag indicating if this is the default app (has the default app name). + */ +@property(nonatomic, readonly) BOOL isDefaultApp; + +/* + * The container of interop SDKs for this app. + */ +@property(nonatomic) FIRComponentContainer *container; + +/** + * Creates an error for failing to configure a subspec service. This method is called by each + * FIRApp notification listener. + */ ++ (NSError *)errorForSubspecConfigurationFailureWithDomain:(NSString *)domain + errorCode:(FIRErrorCode)code + service:(NSString *)service + reason:(NSString *)reason; +/** + * Checks if the default app is configured without trying to configure it. + */ ++ (BOOL)isDefaultAppConfigured; + +/** + * Registers a given third-party library with the given version number to be reported for + * analytics. + * + * @param name Name of the library. + * @param version Version of the library. + */ ++ (void)registerLibrary:(nonnull NSString *)name withVersion:(nonnull NSString *)version; + +/** + * Registers a given internal library with the given version number to be reported for + * analytics. + * + * @param library Optional parameter for component registration. + * @param name Name of the library. + * @param version Version of the library. + */ ++ (void)registerInternalLibrary:(nonnull Class)library + withName:(nonnull NSString *)name + withVersion:(nonnull NSString *)version; + +/** + * A concatenated string representing all the third-party libraries and version numbers. + */ ++ (NSString *)firebaseUserAgent; + +/** + * Used by each SDK to send logs about SDK configuration status to Clearcut. + * + * @note This API is a no-op, please remove calls to it. + */ +- (void)sendLogsWithServiceName:(NSString *)serviceName + version:(NSString *)version + error:(NSError *)error; + +/** + * Can be used by the unit tests in eack SDK to reset FIRApp. This method is thread unsafe. + */ ++ (void)resetApps; + +/** + * Can be used by the unit tests in each SDK to set customized options. + */ +- (instancetype)initInstanceWithName:(NSString *)name options:(FIROptions *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponent.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponent.h new file mode 100644 index 0000000..cb51ee7 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponent.h @@ -0,0 +1,91 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRApp; +@class FIRComponentContainer; + +NS_ASSUME_NONNULL_BEGIN + +/// Provides a system to clean up cached instances returned from the component system. +NS_SWIFT_NAME(ComponentLifecycleMaintainer) +@protocol FIRComponentLifecycleMaintainer +/// The associated app will be deleted, clean up any resources as they are about to be deallocated. +- (void)appWillBeDeleted:(FIRApp *)app; +@end + +typedef _Nullable id (^FIRComponentCreationBlock)(FIRComponentContainer *container, + BOOL *isCacheable) + NS_SWIFT_NAME(ComponentCreationBlock); + +@class FIRDependency; + +/// Describes the timing of instantiation. Note: new components should default to lazy unless there +/// is a strong reason to be eager. +typedef NS_ENUM(NSInteger, FIRInstantiationTiming) { + FIRInstantiationTimingLazy, + FIRInstantiationTimingAlwaysEager, + FIRInstantiationTimingEagerInDefaultApp +} NS_SWIFT_NAME(InstantiationTiming); + +/// A component that can be used from other Firebase SDKs. +NS_SWIFT_NAME(Component) +@interface FIRComponent : NSObject + +/// The protocol describing functionality provided from the Component. +@property(nonatomic, strong, readonly) Protocol *protocol; + +/// The timing of instantiation. +@property(nonatomic, readonly) FIRInstantiationTiming instantiationTiming; + +/// An array of dependencies for the component. +@property(nonatomic, copy, readonly) NSArray *dependencies; + +/// A block to instantiate an instance of the component with the appropriate dependencies. +@property(nonatomic, copy, readonly) FIRComponentCreationBlock creationBlock; + +// There's an issue with long NS_SWIFT_NAMES that causes compilation to fail, disable clang-format +// for the next two methods. +// clang-format off + +/// Creates a component with no dependencies that will be lazily initialized. ++ (instancetype)componentWithProtocol:(Protocol *)protocol + creationBlock:(FIRComponentCreationBlock)creationBlock +NS_SWIFT_NAME(init(_:creationBlock:)); + +/// Creates a component to be registered with the component container. +/// +/// @param protocol - The protocol describing functionality provided by the component. +/// @param instantiationTiming - When the component should be initialized. Use .lazy unless there's +/// a good reason to be instantiated earlier. +/// @param dependencies - Any dependencies the `implementingClass` has, optional or required. +/// @param creationBlock - A block to instantiate the component with a container, and if +/// @return A component that can be registered with the component container. ++ (instancetype)componentWithProtocol:(Protocol *)protocol + instantiationTiming:(FIRInstantiationTiming)instantiationTiming + dependencies:(NSArray *)dependencies + creationBlock:(FIRComponentCreationBlock)creationBlock +NS_SWIFT_NAME(init(_:instantiationTiming:dependencies:creationBlock:)); + +// clang-format on + +/// Unavailable. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponentContainer.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponentContainer.h new file mode 100644 index 0000000..db2bafe --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponentContainer.h @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#import + +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponentType.h") +#import "FirebaseCore/Sources/Private/FIRComponentType.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#else +#import +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/// A type-safe macro to retrieve a component from a container. This should be used to retrieve +/// components instead of using the container directly. +#define FIR_COMPONENT(type, container) \ + [FIRComponentType> instanceForProtocol:@protocol(type) inContainer:container] + +@class FIRApp; + +/// A container that holds different components that are registered via the +/// `registerAsComponentRegistrant:` call. These classes should conform to `FIRComponentRegistrant` +/// in order to properly register components for Core. +NS_SWIFT_NAME(FirebaseComponentContainer) +@interface FIRComponentContainer : NSObject + +/// A weak reference to the app that an instance of the container belongs to. +@property(nonatomic, weak, readonly) FIRApp *app; + +/// Unavailable. Use the `container` property on `FIRApp`. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponentType.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponentType.h new file mode 100644 index 0000000..6f2aca7 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRComponentType.h @@ -0,0 +1,34 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRComponentContainer; + +NS_ASSUME_NONNULL_BEGIN + +/// Do not use directly. A placeholder type in order to provide a macro that will warn users of +/// mis-matched protocols. +NS_SWIFT_NAME(ComponentType) +@interface FIRComponentType<__covariant T> : NSObject + +/// Do not use directly. A factory method to retrieve an instance that provides a specific +/// functionality. ++ (T)instanceForProtocol:(Protocol *)protocol inContainer:(FIRComponentContainer *)container; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h new file mode 100644 index 0000000..76c0c05 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h @@ -0,0 +1,35 @@ +/* + * Copyright 2019 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRDiagnosticsData; +@class FIROptions; + +NS_ASSUME_NONNULL_BEGIN + +/** Connects FIRCore with the CoreDiagnostics library. */ +@interface FIRCoreDiagnosticsConnector : NSObject + +/** Logs FirebaseCore related data. + * + * @param options The options object containing data to log. + */ ++ (void)logCoreTelemetryWithOptions:(FIROptions *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRDependency.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRDependency.h new file mode 100644 index 0000000..46e9b7e --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRDependency.h @@ -0,0 +1,45 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// A dependency on a specific protocol's functionality. +NS_SWIFT_NAME(Dependency) +@interface FIRDependency : NSObject + +/// The protocol describing functionality being depended on. +@property(nonatomic, strong, readonly) Protocol *protocol; + +/// A flag to specify if the dependency is required or not. +@property(nonatomic, readonly) BOOL isRequired; + +/// Initializes a dependency that is required. Calls `initWithProtocol:isRequired` with `YES` for +/// the required parameter. +/// Creates a required dependency on the specified protocol's functionality. ++ (instancetype)dependencyWithProtocol:(Protocol *)protocol; + +/// Creates a dependency on the specified protocol's functionality and specify if it's required for +/// the class's functionality. ++ (instancetype)dependencyWithProtocol:(Protocol *)protocol isRequired:(BOOL)required; + +/// Use `dependencyWithProtocol:isRequired:` instead. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRErrorCode.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRErrorCode.h new file mode 100644 index 0000000..c90d9ee --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRErrorCode.h @@ -0,0 +1,39 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** Error codes in Firebase error domain. */ +typedef NS_ENUM(NSInteger, FIRErrorCode) { + /** + * Unknown error. + */ + FIRErrorCodeUnknown = 0, + /** + * Loading data from the GoogleService-Info.plist file failed. This is a fatal error and should + * not be ignored. Further calls to the API will fail and/or possibly cause crashes. + */ + FIRErrorCodeInvalidPlistFile = -100, + + /** + * Validating the Google App ID format failed. + */ + FIRErrorCodeInvalidAppID = -101, + + /** + * Error code for failing to configure a specific service. It's deprecated, but + * still used after copybara. + */ + FIRErrorCodeConfigFailed = -114, +}; diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRErrors.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRErrors.h new file mode 100644 index 0000000..19e4732 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRErrors.h @@ -0,0 +1,24 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#include "FIRErrorCode.h" + +extern NSString *const kFirebaseErrorDomain; +extern NSString *const kFirebaseConfigErrorDomain; +extern NSString *const kFirebaseCoreErrorDomain; +extern NSString *const kFirebasePerfErrorDomain; diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h new file mode 100644 index 0000000..bfff73e --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h @@ -0,0 +1,39 @@ +// Copyright 2019 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRHeartbeatInfo : NSObject + +// Enum representing the different heartbeat codes. +typedef NS_ENUM(NSInteger, FIRHeartbeatInfoCode) { + FIRHeartbeatInfoCodeNone = 0, + FIRHeartbeatInfoCodeSDK = 1, + FIRHeartbeatInfoCodeGlobal = 2, + FIRHeartbeatInfoCodeCombined = 3, +}; + +/** + * Get heartbeat code requred for the sdk. + * @param heartbeatTag String representing the sdk heartbeat tag. + * @return Heartbeat code indicating whether or not an sdk/global heartbeat + * needs to be sent + */ ++ (FIRHeartbeatInfoCode)heartbeatCodeForTag:(NSString *)heartbeatTag; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRLibrary.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRLibrary.h new file mode 100644 index 0000000..e7a9e07 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRLibrary.h @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FIRLibrary_h +#define FIRLibrary_h + +#import + +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponent.h") +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#else +#import +#endif + +@class FIRApp; + +NS_ASSUME_NONNULL_BEGIN + +/// Provide an interface to register a library for userAgent logging and availability to others. +NS_SWIFT_NAME(Library) +@protocol FIRLibrary + +/// Returns one or more FIRComponents that will be registered in +/// FIRApp and participate in dependency resolution and injection. ++ (NSArray *)componentsToRegister; + +@optional +/// Implement this method if the library needs notifications for lifecycle events. This method is +/// called when the developer calls `FirebaseApp.configure()`. ++ (void)configureWithApp:(FIRApp *)app; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* FIRLibrary_h */ diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRLogger.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRLogger.h new file mode 100644 index 0000000..6fd7784 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIRLogger.h @@ -0,0 +1,156 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRLoggerLevel.h" +#else +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + * The Firebase services used in Firebase logger. + */ +typedef NSString *const FIRLoggerService; + +extern FIRLoggerService kFIRLoggerABTesting; +extern FIRLoggerService kFIRLoggerAdMob; +extern FIRLoggerService kFIRLoggerAnalytics; +extern FIRLoggerService kFIRLoggerAuth; +extern FIRLoggerService kFIRLoggerCrash; +extern FIRLoggerService kFIRLoggerCore; +extern FIRLoggerService kFIRLoggerMLKit; +extern FIRLoggerService kFIRLoggerPerf; +extern FIRLoggerService kFIRLoggerRemoteConfig; + +/** + * The key used to store the logger's error count. + */ +extern NSString *const kFIRLoggerErrorCountKey; + +/** + * The key used to store the logger's warning count. + */ +extern NSString *const kFIRLoggerWarningCountKey; + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/** + * Enables or disables Analytics debug mode. + * If set to YES, the logging level for Analytics will be set to FIRLoggerLevelDebug. + * Enabling the debug mode has no effect if the app is running from App Store. + * (required) analytics debug mode flag. + */ +void FIRSetAnalyticsDebugMode(BOOL analyticsDebugMode); + +/** + * Changes the default logging level of FIRLoggerLevelNotice to a user-specified level. + * The default level cannot be set above FIRLoggerLevelNotice if the app is running from App Store. + * (required) log level (one of the FIRLoggerLevel enum values). + */ +void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel); + +/** + * Checks if the specified logger level is loggable given the current settings. + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) whether or not this function is called from the Analytics component. + */ +BOOL FIRIsLoggableLevel(FIRLoggerLevel loggerLevel, BOOL analyticsComponent); + +/** + * Logs a message to the Xcode console and the device log. If running from AppStore, will + * not log any messages with a level higher than FIRLoggerLevelNotice to avoid log spamming. + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) service name of type FIRLoggerService. + * (required) message code starting with "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * (required) message string which can be a format string. + * (optional) variable arguments list obtained from calling va_start, used when message is a format + * string. + */ +extern void FIRLogBasic(FIRLoggerLevel level, + FIRLoggerService service, + NSString *messageCode, + NSString *message, +// On 64-bit simulators, va_list is not a pointer, so cannot be marked nullable +// See: http://stackoverflow.com/q/29095469 +#if __LP64__ && TARGET_OS_SIMULATOR || TARGET_OS_OSX + va_list args_ptr +#else + va_list _Nullable args_ptr +#endif +); + +/** + * The following functions accept the following parameters in order: + * (required) service name of type FIRLoggerService. + * (required) message code starting from "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * See go/firebase-log-proposal for details. + * (required) message string which can be a format string. + * (optional) the list of arguments to substitute into the format string. + * Example usage: + * FIRLogError(kFIRLoggerCore, @"I-COR000001", @"Configuration of %@ failed.", app.name); + */ +extern void FIRLogError(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogWarning(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogNotice(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogInfo(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogDebug(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +@interface FIRLoggerWrapper : NSObject + +/** + * Objective-C wrapper for FIRLogBasic to allow weak linking to FIRLogger + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) service name of type FIRLoggerService. + * (required) message code starting with "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * (required) message string which can be a format string. + * (optional) variable arguments list obtained from calling va_start, used when message is a format + * string. + */ + ++ (void)logWithLevel:(FIRLoggerLevel)level + withService:(FIRLoggerService)service + withCode:(NSString *)messageCode + withMessage:(NSString *)message + withArgs:(va_list)args; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIROptionsInternal.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIROptionsInternal.h new file mode 100644 index 0000000..acaf458 --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FIROptionsInternal.h @@ -0,0 +1,119 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIROptions.h" +#else +#import +#endif + +/** + * Keys for the strings in the plist file. + */ +extern NSString *const kFIRAPIKey; +extern NSString *const kFIRTrackingID; +extern NSString *const kFIRGoogleAppID; +extern NSString *const kFIRClientID; +extern NSString *const kFIRGCMSenderID; +extern NSString *const kFIRAndroidClientID; +extern NSString *const kFIRDatabaseURL; +extern NSString *const kFIRStorageBucket; +extern NSString *const kFIRBundleID; +extern NSString *const kFIRProjectID; + +/** + * Keys for the plist file name + */ +extern NSString *const kServiceInfoFileName; + +extern NSString *const kServiceInfoFileType; + +/** + * This header file exposes the initialization of FIROptions to internal use. + */ +@interface FIROptions () + +/** + * resetDefaultOptions and initInternalWithOptionsDictionary: are exposed only for unit tests. + */ ++ (void)resetDefaultOptions; + +/** + * Initializes the options with dictionary. The above strings are the keys of the dictionary. + * This is the designated initializer. + */ +- (instancetype)initInternalWithOptionsDictionary:(NSDictionary *)serviceInfoDictionary; + +/** + * defaultOptions and defaultOptionsDictionary are exposed in order to be used in FIRApp and + * other first party services. + */ ++ (FIROptions *)defaultOptions; + ++ (NSDictionary *)defaultOptionsDictionary; + +/** + * Indicates whether or not Analytics collection was explicitly enabled via a plist flag or at + * runtime. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionExplicitlySet; + +/** + * Whether or not Analytics Collection was enabled. Analytics Collection is enabled unless + * explicitly disabled in GoogleService-Info.plist. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionEnabled; + +/** + * Whether or not Analytics Collection was completely disabled. If YES, then + * isAnalyticsCollectionEnabled will be NO. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionDeactivated; + +/** + * The version ID of the client library, e.g. @"1100000". + */ +@property(nonatomic, readonly, copy) NSString *libraryVersionID; + +/** + * The flag indicating whether this object was constructed with the values in the default plist + * file. + */ +@property(nonatomic) BOOL usingOptionsFromDefaultPlist; + +/** + * Whether or not Measurement was enabled. Measurement is enabled unless explicitly disabled in + * GoogleService-Info.plist. + */ +@property(nonatomic, readonly) BOOL isMeasurementEnabled; + +/** + * Whether or not Analytics was enabled in the developer console. + */ +@property(nonatomic, readonly) BOOL isAnalyticsEnabled; + +/** + * Whether or not SignIn was enabled in the developer console. + */ +@property(nonatomic, readonly) BOOL isSignInEnabled; + +/** + * Whether or not editing is locked. This should occur after FIROptions has been set on a FIRApp. + */ +@property(nonatomic, getter=isEditingLocked) BOOL editingLocked; + +@end diff --git a/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FirebaseCoreInternal.h b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FirebaseCoreInternal.h new file mode 100644 index 0000000..93af6cb --- /dev/null +++ b/Pods/FirebaseCrashlytics/FirebaseCore/Sources/Private/FirebaseCoreInternal.h @@ -0,0 +1,31 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// An umbrella header, for any other libraries in this repo to access Firebase Public and Private +// headers. Any package manager complexity should be handled here. + +#if SWIFT_PACKAGE +@import FirebaseCore; +#else +#import +#endif + +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainer.h" +#import "FirebaseCore/Sources/Private/FIRDependency.h" +#import "FirebaseCore/Sources/Private/FIRHeartbeatInfo.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" diff --git a/Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInterop.h b/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRAnalyticsInterop.h similarity index 100% rename from Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInterop.h rename to Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRAnalyticsInterop.h diff --git a/Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInteropListener.h b/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRAnalyticsInteropListener.h similarity index 100% rename from Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInteropListener.h rename to Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRAnalyticsInteropListener.h diff --git a/Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropEventNames.h b/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRInteropEventNames.h similarity index 100% rename from Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropEventNames.h rename to Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRInteropEventNames.h diff --git a/Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropParameterNames.h b/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRInteropParameterNames.h similarity index 100% rename from Pods/FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropParameterNames.h rename to Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRInteropParameterNames.h diff --git a/Pods/FirebaseCrashlytics/README.md b/Pods/FirebaseCrashlytics/README.md index 8c6e952..d778205 100644 --- a/Pods/FirebaseCrashlytics/README.md +++ b/Pods/FirebaseCrashlytics/README.md @@ -1,16 +1,30 @@ -# Firebase iOS Open Source Development - [![Actions Status][gh-core-badge]][gh-actions] - [![Actions Status][gh-dynamiclinks-badge]][gh-actions] - [![Actions Status][gh-datatransport-badge]][gh-actions] - [![Actions Status][gh-storage-badge]][gh-actions] - [![Actions Status][gh-zip-badge]][gh-actions] - [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains a subset of the Firebase iOS SDK source. It currently -includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, -FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and -FirebaseStorage. +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, +FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -75,12 +89,16 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least the following software: - * Xcode 10.1 (or later) + * Xcode 10.3 (or later) * CocoaPods 1.7.2 (or later) * [CocoaPods generate](https://github.com/square/cocoapods-generate) @@ -111,6 +129,10 @@ Firestore has a self contained Xcode project. See See [AddNewPod.md](AddNewPod.md). +### Managing Headers and Imports + +See [HeadersImports.md](HeadersImports.md). + ### Code Formatting To ensure that the code is formatted consistently, run the script @@ -122,8 +144,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -137,7 +159,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -168,18 +190,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -205,32 +235,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -260,8 +292,20 @@ Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). [gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg [gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg [gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg [gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg [gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg [gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/FirebaseCrashlytics/upload-symbols b/Pods/FirebaseCrashlytics/upload-symbols index f76a77c..76738d0 100755 Binary files a/Pods/FirebaseCrashlytics/upload-symbols and b/Pods/FirebaseCrashlytics/upload-symbols differ diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRAppInternal.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRAppInternal.h new file mode 100644 index 0000000..9a0c943 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRAppInternal.h @@ -0,0 +1,173 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRApp.h" +#else +#import +#endif + +// The has_include is a workaround so the old IID needed for the FIS tests can find FIRErrors.h +#if __has_include("FirebaseCore/Sources/Private/FIRErrors.h") +#import "FirebaseCore/Sources/Private/FIRErrors.h" +#else +#import +#endif + +@class FIRComponentContainer; +@protocol FIRLibrary; + +/** + * The internal interface to FIRApp. This is meant for first-party integrators, who need to receive + * FIRApp notifications, log info about the success or failure of their configuration, and access + * other internal functionality of FIRApp. + * + * TODO(b/28296561): Restructure this header. + */ +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, FIRConfigType) { + FIRConfigTypeCore = 1, + FIRConfigTypeSDK = 2, +}; + +extern NSString *const kFIRDefaultAppName; +extern NSString *const kFIRAppReadyToConfigureSDKNotification; +extern NSString *const kFIRAppDeleteNotification; +extern NSString *const kFIRAppIsDefaultAppKey; +extern NSString *const kFIRAppNameKey; +extern NSString *const kFIRGoogleAppIDKey; + +/** + * The format string for the User Defaults key used for storing the data collection enabled flag. + * This includes formatting to append the Firebase App's name. + */ +extern NSString *const kFIRGlobalAppDataCollectionEnabledDefaultsKeyFormat; + +/** + * The plist key used for storing the data collection enabled flag. + */ +extern NSString *const kFIRGlobalAppDataCollectionEnabledPlistKey; + +/** + * A notification fired containing diagnostic information when SDK errors occur. + */ +extern NSString *const kFIRAppDiagnosticsNotification; + +/** @var FIRAuthStateDidChangeInternalNotification + @brief The name of the @c NSNotificationCenter notification which is posted when the auth state + changes (e.g. a new token has been produced, a user logs in or out). The object parameter of + the notification is a dictionary possibly containing the key: + @c FIRAuthStateDidChangeInternalNotificationTokenKey (the new access token.) If it does not + contain this key it indicates a sign-out event took place. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotification; + +/** @var FIRAuthStateDidChangeInternalNotificationTokenKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the new access token. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationTokenKey; + +/** @var FIRAuthStateDidChangeInternalNotificationAppKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the FIRApp associated with the auth instance. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationAppKey; + +/** @var FIRAuthStateDidChangeInternalNotificationUIDKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the new user's UID (or nil if there is no longer a user signed in). + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationUIDKey; + +@interface FIRApp () + +/** + * A flag indicating if this is the default app (has the default app name). + */ +@property(nonatomic, readonly) BOOL isDefaultApp; + +/* + * The container of interop SDKs for this app. + */ +@property(nonatomic) FIRComponentContainer *container; + +/** + * Creates an error for failing to configure a subspec service. This method is called by each + * FIRApp notification listener. + */ ++ (NSError *)errorForSubspecConfigurationFailureWithDomain:(NSString *)domain + errorCode:(FIRErrorCode)code + service:(NSString *)service + reason:(NSString *)reason; +/** + * Checks if the default app is configured without trying to configure it. + */ ++ (BOOL)isDefaultAppConfigured; + +/** + * Registers a given third-party library with the given version number to be reported for + * analytics. + * + * @param name Name of the library. + * @param version Version of the library. + */ ++ (void)registerLibrary:(nonnull NSString *)name withVersion:(nonnull NSString *)version; + +/** + * Registers a given internal library with the given version number to be reported for + * analytics. + * + * @param library Optional parameter for component registration. + * @param name Name of the library. + * @param version Version of the library. + */ ++ (void)registerInternalLibrary:(nonnull Class)library + withName:(nonnull NSString *)name + withVersion:(nonnull NSString *)version; + +/** + * A concatenated string representing all the third-party libraries and version numbers. + */ ++ (NSString *)firebaseUserAgent; + +/** + * Used by each SDK to send logs about SDK configuration status to Clearcut. + * + * @note This API is a no-op, please remove calls to it. + */ +- (void)sendLogsWithServiceName:(NSString *)serviceName + version:(NSString *)version + error:(NSError *)error; + +/** + * Can be used by the unit tests in eack SDK to reset FIRApp. This method is thread unsafe. + */ ++ (void)resetApps; + +/** + * Can be used by the unit tests in each SDK to set customized options. + */ +- (instancetype)initInstanceWithName:(NSString *)name options:(FIROptions *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponent.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponent.h new file mode 100644 index 0000000..cb51ee7 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponent.h @@ -0,0 +1,91 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRApp; +@class FIRComponentContainer; + +NS_ASSUME_NONNULL_BEGIN + +/// Provides a system to clean up cached instances returned from the component system. +NS_SWIFT_NAME(ComponentLifecycleMaintainer) +@protocol FIRComponentLifecycleMaintainer +/// The associated app will be deleted, clean up any resources as they are about to be deallocated. +- (void)appWillBeDeleted:(FIRApp *)app; +@end + +typedef _Nullable id (^FIRComponentCreationBlock)(FIRComponentContainer *container, + BOOL *isCacheable) + NS_SWIFT_NAME(ComponentCreationBlock); + +@class FIRDependency; + +/// Describes the timing of instantiation. Note: new components should default to lazy unless there +/// is a strong reason to be eager. +typedef NS_ENUM(NSInteger, FIRInstantiationTiming) { + FIRInstantiationTimingLazy, + FIRInstantiationTimingAlwaysEager, + FIRInstantiationTimingEagerInDefaultApp +} NS_SWIFT_NAME(InstantiationTiming); + +/// A component that can be used from other Firebase SDKs. +NS_SWIFT_NAME(Component) +@interface FIRComponent : NSObject + +/// The protocol describing functionality provided from the Component. +@property(nonatomic, strong, readonly) Protocol *protocol; + +/// The timing of instantiation. +@property(nonatomic, readonly) FIRInstantiationTiming instantiationTiming; + +/// An array of dependencies for the component. +@property(nonatomic, copy, readonly) NSArray *dependencies; + +/// A block to instantiate an instance of the component with the appropriate dependencies. +@property(nonatomic, copy, readonly) FIRComponentCreationBlock creationBlock; + +// There's an issue with long NS_SWIFT_NAMES that causes compilation to fail, disable clang-format +// for the next two methods. +// clang-format off + +/// Creates a component with no dependencies that will be lazily initialized. ++ (instancetype)componentWithProtocol:(Protocol *)protocol + creationBlock:(FIRComponentCreationBlock)creationBlock +NS_SWIFT_NAME(init(_:creationBlock:)); + +/// Creates a component to be registered with the component container. +/// +/// @param protocol - The protocol describing functionality provided by the component. +/// @param instantiationTiming - When the component should be initialized. Use .lazy unless there's +/// a good reason to be instantiated earlier. +/// @param dependencies - Any dependencies the `implementingClass` has, optional or required. +/// @param creationBlock - A block to instantiate the component with a container, and if +/// @return A component that can be registered with the component container. ++ (instancetype)componentWithProtocol:(Protocol *)protocol + instantiationTiming:(FIRInstantiationTiming)instantiationTiming + dependencies:(NSArray *)dependencies + creationBlock:(FIRComponentCreationBlock)creationBlock +NS_SWIFT_NAME(init(_:instantiationTiming:dependencies:creationBlock:)); + +// clang-format on + +/// Unavailable. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentContainer.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentContainer.h new file mode 100644 index 0000000..db2bafe --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentContainer.h @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#import + +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponentType.h") +#import "FirebaseCore/Sources/Private/FIRComponentType.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#else +#import +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/// A type-safe macro to retrieve a component from a container. This should be used to retrieve +/// components instead of using the container directly. +#define FIR_COMPONENT(type, container) \ + [FIRComponentType> instanceForProtocol:@protocol(type) inContainer:container] + +@class FIRApp; + +/// A container that holds different components that are registered via the +/// `registerAsComponentRegistrant:` call. These classes should conform to `FIRComponentRegistrant` +/// in order to properly register components for Core. +NS_SWIFT_NAME(FirebaseComponentContainer) +@interface FIRComponentContainer : NSObject + +/// A weak reference to the app that an instance of the container belongs to. +@property(nonatomic, weak, readonly) FIRApp *app; + +/// Unavailable. Use the `container` property on `FIRApp`. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentType.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentType.h new file mode 100644 index 0000000..6f2aca7 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentType.h @@ -0,0 +1,34 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRComponentContainer; + +NS_ASSUME_NONNULL_BEGIN + +/// Do not use directly. A placeholder type in order to provide a macro that will warn users of +/// mis-matched protocols. +NS_SWIFT_NAME(ComponentType) +@interface FIRComponentType<__covariant T> : NSObject + +/// Do not use directly. A factory method to retrieve an instance that provides a specific +/// functionality. ++ (T)instanceForProtocol:(Protocol *)protocol inContainer:(FIRComponentContainer *)container; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h new file mode 100644 index 0000000..76c0c05 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h @@ -0,0 +1,35 @@ +/* + * Copyright 2019 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRDiagnosticsData; +@class FIROptions; + +NS_ASSUME_NONNULL_BEGIN + +/** Connects FIRCore with the CoreDiagnostics library. */ +@interface FIRCoreDiagnosticsConnector : NSObject + +/** Logs FirebaseCore related data. + * + * @param options The options object containing data to log. + */ ++ (void)logCoreTelemetryWithOptions:(FIROptions *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRDependency.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRDependency.h new file mode 100644 index 0000000..46e9b7e --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRDependency.h @@ -0,0 +1,45 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// A dependency on a specific protocol's functionality. +NS_SWIFT_NAME(Dependency) +@interface FIRDependency : NSObject + +/// The protocol describing functionality being depended on. +@property(nonatomic, strong, readonly) Protocol *protocol; + +/// A flag to specify if the dependency is required or not. +@property(nonatomic, readonly) BOOL isRequired; + +/// Initializes a dependency that is required. Calls `initWithProtocol:isRequired` with `YES` for +/// the required parameter. +/// Creates a required dependency on the specified protocol's functionality. ++ (instancetype)dependencyWithProtocol:(Protocol *)protocol; + +/// Creates a dependency on the specified protocol's functionality and specify if it's required for +/// the class's functionality. ++ (instancetype)dependencyWithProtocol:(Protocol *)protocol isRequired:(BOOL)required; + +/// Use `dependencyWithProtocol:isRequired:` instead. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRErrorCode.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRErrorCode.h new file mode 100644 index 0000000..c90d9ee --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRErrorCode.h @@ -0,0 +1,39 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** Error codes in Firebase error domain. */ +typedef NS_ENUM(NSInteger, FIRErrorCode) { + /** + * Unknown error. + */ + FIRErrorCodeUnknown = 0, + /** + * Loading data from the GoogleService-Info.plist file failed. This is a fatal error and should + * not be ignored. Further calls to the API will fail and/or possibly cause crashes. + */ + FIRErrorCodeInvalidPlistFile = -100, + + /** + * Validating the Google App ID format failed. + */ + FIRErrorCodeInvalidAppID = -101, + + /** + * Error code for failing to configure a specific service. It's deprecated, but + * still used after copybara. + */ + FIRErrorCodeConfigFailed = -114, +}; diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRErrors.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRErrors.h new file mode 100644 index 0000000..19e4732 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRErrors.h @@ -0,0 +1,24 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#include "FIRErrorCode.h" + +extern NSString *const kFirebaseErrorDomain; +extern NSString *const kFirebaseConfigErrorDomain; +extern NSString *const kFirebaseCoreErrorDomain; +extern NSString *const kFirebasePerfErrorDomain; diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h new file mode 100644 index 0000000..bfff73e --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h @@ -0,0 +1,39 @@ +// Copyright 2019 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRHeartbeatInfo : NSObject + +// Enum representing the different heartbeat codes. +typedef NS_ENUM(NSInteger, FIRHeartbeatInfoCode) { + FIRHeartbeatInfoCodeNone = 0, + FIRHeartbeatInfoCodeSDK = 1, + FIRHeartbeatInfoCodeGlobal = 2, + FIRHeartbeatInfoCodeCombined = 3, +}; + +/** + * Get heartbeat code requred for the sdk. + * @param heartbeatTag String representing the sdk heartbeat tag. + * @return Heartbeat code indicating whether or not an sdk/global heartbeat + * needs to be sent + */ ++ (FIRHeartbeatInfoCode)heartbeatCodeForTag:(NSString *)heartbeatTag; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLibrary.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLibrary.h new file mode 100644 index 0000000..e7a9e07 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLibrary.h @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FIRLibrary_h +#define FIRLibrary_h + +#import + +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponent.h") +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#else +#import +#endif + +@class FIRApp; + +NS_ASSUME_NONNULL_BEGIN + +/// Provide an interface to register a library for userAgent logging and availability to others. +NS_SWIFT_NAME(Library) +@protocol FIRLibrary + +/// Returns one or more FIRComponents that will be registered in +/// FIRApp and participate in dependency resolution and injection. ++ (NSArray *)componentsToRegister; + +@optional +/// Implement this method if the library needs notifications for lifecycle events. This method is +/// called when the developer calls `FirebaseApp.configure()`. ++ (void)configureWithApp:(FIRApp *)app; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* FIRLibrary_h */ diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLogger.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLogger.h new file mode 100644 index 0000000..6fd7784 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLogger.h @@ -0,0 +1,156 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRLoggerLevel.h" +#else +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + * The Firebase services used in Firebase logger. + */ +typedef NSString *const FIRLoggerService; + +extern FIRLoggerService kFIRLoggerABTesting; +extern FIRLoggerService kFIRLoggerAdMob; +extern FIRLoggerService kFIRLoggerAnalytics; +extern FIRLoggerService kFIRLoggerAuth; +extern FIRLoggerService kFIRLoggerCrash; +extern FIRLoggerService kFIRLoggerCore; +extern FIRLoggerService kFIRLoggerMLKit; +extern FIRLoggerService kFIRLoggerPerf; +extern FIRLoggerService kFIRLoggerRemoteConfig; + +/** + * The key used to store the logger's error count. + */ +extern NSString *const kFIRLoggerErrorCountKey; + +/** + * The key used to store the logger's warning count. + */ +extern NSString *const kFIRLoggerWarningCountKey; + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/** + * Enables or disables Analytics debug mode. + * If set to YES, the logging level for Analytics will be set to FIRLoggerLevelDebug. + * Enabling the debug mode has no effect if the app is running from App Store. + * (required) analytics debug mode flag. + */ +void FIRSetAnalyticsDebugMode(BOOL analyticsDebugMode); + +/** + * Changes the default logging level of FIRLoggerLevelNotice to a user-specified level. + * The default level cannot be set above FIRLoggerLevelNotice if the app is running from App Store. + * (required) log level (one of the FIRLoggerLevel enum values). + */ +void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel); + +/** + * Checks if the specified logger level is loggable given the current settings. + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) whether or not this function is called from the Analytics component. + */ +BOOL FIRIsLoggableLevel(FIRLoggerLevel loggerLevel, BOOL analyticsComponent); + +/** + * Logs a message to the Xcode console and the device log. If running from AppStore, will + * not log any messages with a level higher than FIRLoggerLevelNotice to avoid log spamming. + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) service name of type FIRLoggerService. + * (required) message code starting with "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * (required) message string which can be a format string. + * (optional) variable arguments list obtained from calling va_start, used when message is a format + * string. + */ +extern void FIRLogBasic(FIRLoggerLevel level, + FIRLoggerService service, + NSString *messageCode, + NSString *message, +// On 64-bit simulators, va_list is not a pointer, so cannot be marked nullable +// See: http://stackoverflow.com/q/29095469 +#if __LP64__ && TARGET_OS_SIMULATOR || TARGET_OS_OSX + va_list args_ptr +#else + va_list _Nullable args_ptr +#endif +); + +/** + * The following functions accept the following parameters in order: + * (required) service name of type FIRLoggerService. + * (required) message code starting from "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * See go/firebase-log-proposal for details. + * (required) message string which can be a format string. + * (optional) the list of arguments to substitute into the format string. + * Example usage: + * FIRLogError(kFIRLoggerCore, @"I-COR000001", @"Configuration of %@ failed.", app.name); + */ +extern void FIRLogError(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogWarning(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogNotice(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogInfo(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogDebug(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +@interface FIRLoggerWrapper : NSObject + +/** + * Objective-C wrapper for FIRLogBasic to allow weak linking to FIRLogger + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) service name of type FIRLoggerService. + * (required) message code starting with "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * (required) message string which can be a format string. + * (optional) variable arguments list obtained from calling va_start, used when message is a format + * string. + */ + ++ (void)logWithLevel:(FIRLoggerLevel)level + withService:(FIRLoggerService)service + withCode:(NSString *)messageCode + withMessage:(NSString *)message + withArgs:(va_list)args; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIROptionsInternal.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIROptionsInternal.h new file mode 100644 index 0000000..acaf458 --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIROptionsInternal.h @@ -0,0 +1,119 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIROptions.h" +#else +#import +#endif + +/** + * Keys for the strings in the plist file. + */ +extern NSString *const kFIRAPIKey; +extern NSString *const kFIRTrackingID; +extern NSString *const kFIRGoogleAppID; +extern NSString *const kFIRClientID; +extern NSString *const kFIRGCMSenderID; +extern NSString *const kFIRAndroidClientID; +extern NSString *const kFIRDatabaseURL; +extern NSString *const kFIRStorageBucket; +extern NSString *const kFIRBundleID; +extern NSString *const kFIRProjectID; + +/** + * Keys for the plist file name + */ +extern NSString *const kServiceInfoFileName; + +extern NSString *const kServiceInfoFileType; + +/** + * This header file exposes the initialization of FIROptions to internal use. + */ +@interface FIROptions () + +/** + * resetDefaultOptions and initInternalWithOptionsDictionary: are exposed only for unit tests. + */ ++ (void)resetDefaultOptions; + +/** + * Initializes the options with dictionary. The above strings are the keys of the dictionary. + * This is the designated initializer. + */ +- (instancetype)initInternalWithOptionsDictionary:(NSDictionary *)serviceInfoDictionary; + +/** + * defaultOptions and defaultOptionsDictionary are exposed in order to be used in FIRApp and + * other first party services. + */ ++ (FIROptions *)defaultOptions; + ++ (NSDictionary *)defaultOptionsDictionary; + +/** + * Indicates whether or not Analytics collection was explicitly enabled via a plist flag or at + * runtime. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionExplicitlySet; + +/** + * Whether or not Analytics Collection was enabled. Analytics Collection is enabled unless + * explicitly disabled in GoogleService-Info.plist. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionEnabled; + +/** + * Whether or not Analytics Collection was completely disabled. If YES, then + * isAnalyticsCollectionEnabled will be NO. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionDeactivated; + +/** + * The version ID of the client library, e.g. @"1100000". + */ +@property(nonatomic, readonly, copy) NSString *libraryVersionID; + +/** + * The flag indicating whether this object was constructed with the values in the default plist + * file. + */ +@property(nonatomic) BOOL usingOptionsFromDefaultPlist; + +/** + * Whether or not Measurement was enabled. Measurement is enabled unless explicitly disabled in + * GoogleService-Info.plist. + */ +@property(nonatomic, readonly) BOOL isMeasurementEnabled; + +/** + * Whether or not Analytics was enabled in the developer console. + */ +@property(nonatomic, readonly) BOOL isAnalyticsEnabled; + +/** + * Whether or not SignIn was enabled in the developer console. + */ +@property(nonatomic, readonly) BOOL isSignInEnabled; + +/** + * Whether or not editing is locked. This should occur after FIROptions has been set on a FIRApp. + */ +@property(nonatomic, getter=isEditingLocked) BOOL editingLocked; + +@end diff --git a/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FirebaseCoreInternal.h b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FirebaseCoreInternal.h new file mode 100644 index 0000000..93af6cb --- /dev/null +++ b/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FirebaseCoreInternal.h @@ -0,0 +1,31 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// An umbrella header, for any other libraries in this repo to access Firebase Public and Private +// headers. Any package manager complexity should be handled here. + +#if SWIFT_PACKAGE +@import FirebaseCore; +#else +#import +#endif + +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainer.h" +#import "FirebaseCore/Sources/Private/FIRDependency.h" +#import "FirebaseCore/Sources/Private/FIRHeartbeatInfo.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m index 5b3eae2..05256ea 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m @@ -41,9 +41,10 @@ + (FIRInstallationsErrorCode)errorCodeWithHTTPCode:(NSInteger)HTTPCode { + (NSDictionary *)userInfoWithHTTPResponse:(NSHTTPURLResponse *)HTTPResponse data:(nullable NSData *)data { NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - NSString *failureReason = [NSString - stringWithFormat:@"The server responded with an error. HTTP response: %@\nResponse body: %@", - HTTPResponse, responseString]; + NSString *failureReason = + [NSString stringWithFormat:@"The server responded with an error: \n - URL: %@ \n - HTTP " + @"status code: %ld \n - Response body: %@", + HTTPResponse.URL, (long)HTTPResponse.statusCode, responseString]; return @{NSLocalizedFailureReasonErrorKey : failureReason}; } diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m index 71e7dd4..d508663 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m @@ -22,12 +22,7 @@ #import "FBLPromises.h" #endif -#import -#import -#import -#import -#import -#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" #import "FIRInstallationsAuthTokenResultInternal.h" @@ -89,10 +84,12 @@ - (instancetype)initWitAppOptions:(FIROptions *)appOptions appName:(NSString *)a projectID:appOptions.projectID GCMSenderID:appOptions.GCMSenderID accessGroup:appOptions.appGroupID]; + + // `prefetchAuthToken` is disabled due to b/156746574. return [self initWithAppOptions:appOptions appName:appName installationsIDController:IDController - prefetchAuthToken:YES]; + prefetchAuthToken:NO]; } /// The initializer is supposed to be used by tests to inject `installationsStore`. diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h index baeadb2..e4192bf 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h @@ -16,7 +16,7 @@ #import -#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" extern FIRLoggerService kFIRLoggerInstallations; diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m index 1c9dbab..b2b6931 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m @@ -22,8 +22,9 @@ #import "FBLPromises.h" #endif +#import + #import "FIRInstallationsErrorUtil.h" -#import "FIRInstallationsKeychainUtils.h" static NSString *const kFIRInstallationsIIDTokenKeychainId = @"com.google.iid-tokens"; @@ -118,7 +119,7 @@ - (instancetype)initWithGCMSenderID:(NSString *)GCMSenderID { NSMutableDictionary *keychainQuery = [self IIDDefaultTokenDataKeychainQuery]; NSError *error; - NSData *data = [FIRInstallationsKeychainUtils getItemWithQuery:keychainQuery error:&error]; + NSData *data = [GULKeychainUtils getItemWithQuery:keychainQuery error:&error]; if (data) { [resultPromise fulfill:data]; diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m index 5bd7e3b..7021847 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m @@ -24,11 +24,10 @@ #import "FBLPromises.h" #endif -#import -#import #import "FIRInstallationsErrorUtil.h" #import "FIRInstallationsItem+RegisterInstallationAPI.h" #import "FIRInstallationsLogger.h" +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" NSString *const kFIRInstallationsAPIBaseURL = @"https://firebaseinstallations.googleapis.com"; NSString *const kFIRInstallationsAPIKey = @"X-Goog-Api-Key"; @@ -92,17 +91,21 @@ - (instancetype)initWithURLSession:(NSURLSession *)URLSession #pragma mark - Public - (FBLPromise *)registerInstallation:(FIRInstallationsItem *)installation { - NSURLRequest *request = [self registerRequestWithInstallation:installation]; - return [self sendURLRequest:request].then( - ^id _Nullable(FIRInstallationsURLSessionResponse *response) { + return [self registerRequestWithInstallation:installation] + .then(^id _Nullable(NSURLRequest *_Nullable request) { + return [self sendURLRequest:request]; + }) + .then(^id _Nullable(FIRInstallationsURLSessionResponse *response) { return [self registeredInstallationWithInstallation:installation serverResponse:response]; }); } - (FBLPromise *)refreshAuthTokenForInstallation: (FIRInstallationsItem *)installation { - NSURLRequest *request = [self authTokenRequestWithInstallation:installation]; - return [self sendURLRequest:request] + return [self authTokenRequestWithInstallation:installation] + .then(^id _Nullable(NSURLRequest *_Nullable request) { + return [self sendURLRequest:request]; + }) .then(^FBLPromise *( FIRInstallationsURLSessionResponse *response) { return [self authTokenWithServerResponse:response]; @@ -115,17 +118,20 @@ - (instancetype)initWithURLSession:(NSURLSession *)URLSession } - (FBLPromise *)deleteInstallation:(FIRInstallationsItem *)installation { - NSURLRequest *request = [self deleteInstallationRequestWithInstallation:installation]; - return [[self sendURLRequest:request] - then:^id _Nullable(FIRInstallationsURLSessionResponse *_Nullable value) { + return [self deleteInstallationRequestWithInstallation:installation] + .then(^id _Nullable(NSURLRequest *_Nullable request) { + return [self sendURLRequest:request]; + }) + .then(^id _Nullable(FIRInstallationsURLSessionResponse *_Nullable value) { // Return the original installation on success. return installation; - }]; + }); } #pragma mark - Register Installation -- (NSURLRequest *)registerRequestWithInstallation:(FIRInstallationsItem *)installation { +- (FBLPromise *)registerRequestWithInstallation: + (FIRInstallationsItem *)installation { NSString *URLString = [NSString stringWithFormat:@"%@/v1/projects/%@/installations/", kFIRInstallationsAPIBaseURL, self.projectID]; NSURL *URL = [NSURL URLWithString:URLString]; @@ -176,7 +182,8 @@ - (NSURLRequest *)registerRequestWithInstallation:(FIRInstallationsItem *)instal #pragma mark - Auth token -- (NSURLRequest *)authTokenRequestWithInstallation:(FIRInstallationsItem *)installation { +- (FBLPromise *)authTokenRequestWithInstallation: + (FIRInstallationsItem *)installation { NSString *URLString = [NSString stringWithFormat:@"%@/v1/projects/%@/installations/%@/authTokens:generate", kFIRInstallationsAPIBaseURL, self.projectID, @@ -216,7 +223,8 @@ - (NSURLRequest *)authTokenRequestWithInstallation:(FIRInstallationsItem *)insta #pragma mark - Delete Installation -- (NSURLRequest *)deleteInstallationRequestWithInstallation:(FIRInstallationsItem *)installation { +- (FBLPromise *)deleteInstallationRequestWithInstallation: + (FIRInstallationsItem *)installation { NSString *URLString = [NSString stringWithFormat:@"%@/v1/projects/%@/installations/%@/", kFIRInstallationsAPIBaseURL, self.projectID, installation.firebaseInstallationID]; @@ -229,10 +237,10 @@ - (NSURLRequest *)deleteInstallationRequestWithInstallation:(FIRInstallationsIte } #pragma mark - URL Request -- (NSURLRequest *)requestWithURL:(NSURL *)requestURL - HTTPMethod:(NSString *)HTTPMethod - bodyDict:(NSDictionary *)bodyDict - refreshToken:(nullable NSString *)refreshToken { +- (FBLPromise *)requestWithURL:(NSURL *)requestURL + HTTPMethod:(NSString *)HTTPMethod + bodyDict:(NSDictionary *)bodyDict + refreshToken:(nullable NSString *)refreshToken { return [self requestWithURL:requestURL HTTPMethod:HTTPMethod bodyDict:bodyDict @@ -240,34 +248,41 @@ - (NSURLRequest *)requestWithURL:(NSURL *)requestURL additionalHeaders:nil]; } -- (NSURLRequest *)requestWithURL:(NSURL *)requestURL - HTTPMethod:(NSString *)HTTPMethod - bodyDict:(NSDictionary *)bodyDict - refreshToken:(nullable NSString *)refreshToken - additionalHeaders: - (nullable NSDictionary *)additionalHeaders { - __block NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestURL]; - request.HTTPMethod = HTTPMethod; - NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; - [request addValue:self.APIKey forHTTPHeaderField:kFIRInstallationsAPIKey]; - [request addValue:bundleIdentifier forHTTPHeaderField:kFIRInstallationsBundleId]; - [self setJSONHTTPBody:bodyDict forRequest:request]; - if (refreshToken) { - NSString *authHeader = [NSString stringWithFormat:@"FIS_v2 %@", refreshToken]; - [request setValue:authHeader forHTTPHeaderField:@"Authorization"]; - } - // User agent Header. - [request setValue:[FIRApp firebaseUserAgent] forHTTPHeaderField:kFIRInstallationsUserAgentKey]; - // Heartbeat Header. - [request setValue:@([FIRHeartbeatInfo heartbeatCodeForTag:kFIRInstallationsHeartbeatTag]) - .stringValue - forHTTPHeaderField:kFIRInstallationsHeartbeatKey]; - [additionalHeaders enumerateKeysAndObjectsUsingBlock:^( - NSString *_Nonnull key, NSString *_Nonnull obj, BOOL *_Nonnull stop) { - [request setValue:obj forHTTPHeaderField:key]; - }]; - - return [request copy]; +- (FBLPromise *)requestWithURL:(NSURL *)requestURL + HTTPMethod:(NSString *)HTTPMethod + bodyDict:(NSDictionary *)bodyDict + refreshToken:(nullable NSString *)refreshToken + additionalHeaders:(nullable NSDictionary *) + additionalHeaders { + return [FBLPromise + onQueue:dispatch_get_global_queue(QOS_CLASS_UTILITY, 0) + do:^id _Nullable { + __block NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestURL]; + request.HTTPMethod = HTTPMethod; + NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; + [request addValue:self.APIKey forHTTPHeaderField:kFIRInstallationsAPIKey]; + [request addValue:bundleIdentifier forHTTPHeaderField:kFIRInstallationsBundleId]; + [self setJSONHTTPBody:bodyDict forRequest:request]; + if (refreshToken) { + NSString *authHeader = [NSString stringWithFormat:@"FIS_v2 %@", refreshToken]; + [request setValue:authHeader forHTTPHeaderField:@"Authorization"]; + } + // User agent Header. + [request setValue:[FIRApp firebaseUserAgent] + forHTTPHeaderField:kFIRInstallationsUserAgentKey]; + // Heartbeat Header. + [request setValue:@([FIRHeartbeatInfo + heartbeatCodeForTag:kFIRInstallationsHeartbeatTag]) + .stringValue + forHTTPHeaderField:kFIRInstallationsHeartbeatKey]; + [additionalHeaders + enumerateKeysAndObjectsUsingBlock:^(NSString *_Nonnull key, NSString *_Nonnull obj, + BOOL *_Nonnull stop) { + [request setValue:obj forHTTPHeaderField:key]; + }]; + + return [request copy]; + }]; } - (FBLPromise *)URLRequestPromise:(NSURLRequest *)request { diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m index 1982a57..325b5bf 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m @@ -22,7 +22,8 @@ #import "FBLPromises.h" #endif -#import +#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" #import "FIRInstallationsAPIService.h" #import "FIRInstallationsErrorUtil.h" @@ -32,7 +33,6 @@ #import "FIRInstallationsLogger.h" #import "FIRInstallationsSingleOperationPromiseCache.h" #import "FIRInstallationsStore.h" -#import "FIRSecureStorage.h" #import "FIRInstallationsHTTPError.h" #import "FIRInstallationsStoredAuthToken.h" @@ -44,6 +44,8 @@ NSTimeInterval const kFIRInstallationsTokenExpirationThreshold = 60 * 60; // 1 hour. +static NSString *const kKeychainService = @"com.firebase.FIRInstallations.installations"; + @interface FIRInstallationsIDController () @property(nonatomic, readonly) NSString *appID; @property(nonatomic, readonly) NSString *appName; @@ -71,8 +73,9 @@ - (instancetype)initWithGoogleAppID:(NSString *)appID APIKey:(NSString *)APIKey projectID:(NSString *)projectID GCMSenderID:(NSString *)GCMSenderID - accessGroup:(NSString *)accessGroup { - FIRSecureStorage *secureStorage = [[FIRSecureStorage alloc] init]; + accessGroup:(nullable NSString *)accessGroup { + NSString *serviceName = [FIRInstallationsIDController keychainServiceWithAppID:appID]; + GULKeychainStorage *secureStorage = [[GULKeychainStorage alloc] initWithService:serviceName]; FIRInstallationsStore *installationsStore = [[FIRInstallationsStore alloc] initWithSecureStorage:secureStorage accessGroup:accessGroup]; @@ -255,9 +258,9 @@ - (FIRInstallationsItem *)createInstallationWithFID:(NSString *)FID if ([self doesRegistrationErrorRequireConfigChange:error]) { FIRLogError(kFIRLoggerInstallations, kFIRInstallationsMessageCodeInvalidFirebaseConfiguration, - @"Firebase Installation registration failed for app with name: %@, error: " + @"Firebase Installation registration failed for app with name: %@, error:\n" @"%@\nPlease make sure you use valid GoogleService-Info.plist", - self.appName, error); + self.appName, error.userInfo[NSLocalizedFailureReasonErrorKey]); } }) .then(^id(FIRInstallationsItem *registeredInstallation) { @@ -455,4 +458,23 @@ - (BOOL)isDefaultApp { return [self.appName isEqualToString:kFIRDefaultAppName]; } +#pragma mark - Keychain + ++ (NSString *)keychainServiceWithAppID:(NSString *)appID { +#if TARGET_OS_MACCATALYST || TARGET_OS_OSX + // We need to keep service name unique per application on macOS. + // Applications on macOS may request access to Keychain items stored by other applications. It + // means that when the app looks up for a relevant Keychain item in the service scope it will + // request user password to grant access to the Keychain if there are other Keychain items from + // other applications stored under the same Keychain Service. + return [kKeychainService stringByAppendingFormat:@".%@", appID]; +#else + // Use a constant Keychain service for non-macOS because: + // 1. Keychain items cannot be shared between apps until configured specifically so the service + // name collisions are not a concern + // 2. We don't want to change the service name to avoid doing a migration. + return kKeychainService; +#endif +} + @end diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h index 5334cc9..b86fb39 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h @@ -18,7 +18,7 @@ @class FBLPromise; @class FIRInstallationsItem; -@class FIRSecureStorage; +@class GULKeychainStorage; NS_ASSUME_NONNULL_BEGIN @@ -33,7 +33,7 @@ extern NSString *const kFIRInstallationsStoreUserDefaultsID; * @param storage The secure storage to save installations data. * @param accessGroup The Keychain Access Group to store and request the installations data. */ -- (instancetype)initWithSecureStorage:(FIRSecureStorage *)storage +- (instancetype)initWithSecureStorage:(GULKeychainStorage *)storage accessGroup:(nullable NSString *)accessGroup; /** diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m index 9fcfd74..46f58db 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m +++ b/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m @@ -24,15 +24,16 @@ #import "FBLPromises.h" #endif +#import + #import "FIRInstallationsErrorUtil.h" #import "FIRInstallationsItem.h" #import "FIRInstallationsStoredItem.h" -#import "FIRSecureStorage.h" NSString *const kFIRInstallationsStoreUserDefaultsID = @"com.firebase.FIRInstallations"; @interface FIRInstallationsStore () -@property(nonatomic, readonly) FIRSecureStorage *secureStorage; +@property(nonatomic, readonly) GULKeychainStorage *secureStorage; @property(nonatomic, readonly, nullable) NSString *accessGroup; @property(nonatomic, readonly) dispatch_queue_t queue; @property(nonatomic, readonly) GULUserDefaults *userDefaults; @@ -40,7 +41,7 @@ @interface FIRInstallationsStore () @implementation FIRInstallationsStore -- (instancetype)initWithSecureStorage:(FIRSecureStorage *)storage +- (instancetype)initWithSecureStorage:(GULKeychainStorage *)storage accessGroup:(NSString *)accessGroup { self = [super init]; if (self) { diff --git a/Pods/FirebaseInstallations/README.md b/Pods/FirebaseInstallations/README.md index 3ddc8fb..d778205 100644 --- a/Pods/FirebaseInstallations/README.md +++ b/Pods/FirebaseInstallations/README.md @@ -1,10 +1,30 @@ -# Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains a subset of the Firebase iOS SDK source. It currently -includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, -FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and -FirebaseStorage. +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, +FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -69,12 +89,16 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least the following software: - * Xcode 10.1 (or later) + * Xcode 10.3 (or later) * CocoaPods 1.7.2 (or later) * [CocoaPods generate](https://github.com/square/cocoapods-generate) @@ -105,6 +129,10 @@ Firestore has a self contained Xcode project. See See [AddNewPod.md](AddNewPod.md). +### Managing Headers and Imports + +See [HeadersImports.md](HeadersImports.md). + ### Code Formatting To ensure that the code is formatted consistently, run the script @@ -116,8 +144,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -131,7 +159,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -162,18 +190,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -199,29 +235,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst -Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, -FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +### tvOS, macOS, watchOS and Catalyst +Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). +During app setup in the console, you may get to a step that mentions something like "Checking if the app +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. +**It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. + To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -249,3 +290,22 @@ The contents of this repository is licensed under the Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). + +[gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg +[gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg +[gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg +[gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg +[gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg +[gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m index f9cba4f..1fcc420 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m @@ -18,11 +18,6 @@ #import -#import -#import -#import -#import -#import #import #import #import "FIRInstanceID+Private.h" @@ -37,6 +32,7 @@ #import "FIRInstanceIDTokenManager.h" #import "FIRInstanceIDUtilities.h" #import "FIRInstanceIDVersionUtilities.h" +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" #import "NSError+FIRInstanceID.h" // Public constants @@ -245,19 +241,20 @@ - (NSString *)cachedTokenIfAvailable { } - (void)setDefaultFCMToken:(NSString *)defaultFCMToken { - if (_defaultFCMToken && defaultFCMToken && [defaultFCMToken isEqualToString:_defaultFCMToken]) { - return; + // Sending this notification out will ensure that FIRMessaging and FIRInstanceID has the updated + // default FCM token. + // Only notify of token refresh if we have a new valid token that's different than before + if ((defaultFCMToken.length && _defaultFCMToken.length && + ![defaultFCMToken isEqualToString:_defaultFCMToken]) || + defaultFCMToken.length != _defaultFCMToken.length) { + NSNotification *tokenRefreshNotification = + [NSNotification notificationWithName:kFIRInstanceIDTokenRefreshNotification + object:[defaultFCMToken copy]]; + [[NSNotificationQueue defaultQueue] enqueueNotification:tokenRefreshNotification + postingStyle:NSPostASAP]; } _defaultFCMToken = defaultFCMToken; - - // Sending this notification out will ensure that FIRMessaging has the updated - // default FCM token. - NSNotification *internalDefaultTokenNotification = - [NSNotification notificationWithName:kFIRInstanceIDDefaultGCMTokenNotification - object:_defaultFCMToken]; - [[NSNotificationQueue defaultQueue] enqueueNotification:internalDefaultTokenNotification - postingStyle:NSPostASAP]; } - (void)tokenWithAuthorizedEntity:(NSString *)authorizedEntity @@ -367,6 +364,7 @@ - (void)deleteTokenWithAuthorizedEntity:(NSString *)authorizedEntity if (!handler) { FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeInstanceID001, kFIRInstanceIDInvalidNilHandlerError); + return; } // comparing enums to ints directly throws a warning @@ -836,18 +834,10 @@ - (void)defaultTokenWithRetry:(BOOL)retry handler:(nullable FIRInstanceIDTokenHa // Post the required notifications if somebody is waiting. FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeInstanceID008, @"Got default token %@", token); - NSString *previousFCMToken = self.defaultFCMToken; + // Update default FCM token, this method also triggers sending notification if token has + // changed. self.defaultFCMToken = token; - // Only notify of token refresh if we have a new valid token that's different than before - if (self.defaultFCMToken.length && ![self.defaultFCMToken isEqualToString:previousFCMToken]) { - NSNotification *tokenRefreshNotification = - [NSNotification notificationWithName:kFIRInstanceIDTokenRefreshNotification - object:[self.defaultFCMToken copy]]; - [[NSNotificationQueue defaultQueue] enqueueNotification:tokenRefreshNotification - postingStyle:NSPostASAP]; - } - [self performDefaultTokenHandlerWithToken:token error:nil]; } }; @@ -982,12 +972,12 @@ - (BOOL)isProductionApp { // Apps distributed via AppStore or TestFlight use the Production APNS certificates. return defaultAppTypeProd; } -#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH - NSString *path = [[[NSBundle mainBundle] bundlePath] - stringByAppendingPathComponent:@"embedded.mobileprovision"]; -#elif TARGET_OS_OSX +#if TARGET_OS_OSX || TARGET_OS_MACCATALYST NSString *path = [[[[NSBundle mainBundle] resourcePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"embedded.provisionprofile"]; +#elif TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH + NSString *path = [[[NSBundle mainBundle] bundlePath] + stringByAppendingPathComponent:@"embedded.mobileprovision"]; #endif if ([GULAppEnvironmentUtil isAppStoreReceiptSandbox] && !path.length) { diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.h b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.h index 5e1b119..a7307a7 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.h +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.h @@ -22,8 +22,6 @@ // These values exposed for testing extern NSString *const kFIRInstanceIDCheckinKeychainService; -extern NSString *const kFIRInstanceIDLegacyCheckinKeychainAccount; -extern NSString *const kFIRInstanceIDLegacyCheckinKeychainService; /** * Checkin preferences backing store. @@ -95,14 +93,4 @@ extern NSString *const kFIRInstanceIDLegacyCheckinKeychainService; */ - (FIRInstanceIDCheckinPreferences *)cachedCheckinPreferences; -/** - * Migrate the checkin item from old service/account to the new one. - * The new account is dynamic as it uses bundle ID. - * This is to ensure checkin is not shared across apps, but still the same - * if app has used GCM before. - * This call should only happen once. - * - */ -- (void)migrateCheckinItemIfNeeded; - @end diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m index 1142778..b3bd353 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m @@ -29,13 +29,6 @@ static NSString *const kFIRInstanceIDCheckinKeychainGeneric = @"com.google.iid"; NSString *const kFIRInstanceIDCheckinKeychainService = @"com.google.iid.checkin"; -NSString *const kFIRInstanceIDLegacyCheckinKeychainAccount = @"com.google.iid.checkin-account"; -NSString *const kFIRInstanceIDLegacyCheckinKeychainService = @"com.google.iid.checkin-service"; - -// Checkin plist used to have the deviceID and secret stored in them and that's why they -// had 6 items in it. Since the deviceID and secret have been moved to the keychain -// there would only be 4 items. -static const NSInteger kOldCheckinPlistCount = 6; @interface FIRInstanceIDCheckinStore () @@ -157,19 +150,11 @@ - (void)removeCheckinPreferencesWithHandler:(void (^)(NSError *error))handler { FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeCheckinStoreCheckinPlistDeleted, @"Deleted checkin plist file."); // Remove deviceID and secret from Keychain - [self.keychain - removeItemsMatchingService:kFIRInstanceIDCheckinKeychainService - account:self.bundleIdentifierForKeychainAccount - handler:^(NSError *error) { - // Try to remove from old location as well because migration - // is no longer needed. Consider this is either a fresh install - // or an identity wipe. - [self.keychain - removeItemsMatchingService:kFIRInstanceIDLegacyCheckinKeychainService - account:kFIRInstanceIDLegacyCheckinKeychainAccount - handler:nil]; - handler(error); - }]; + [self.keychain removeItemsMatchingService:kFIRInstanceIDCheckinKeychainService + account:self.bundleIdentifierForKeychainAccount + handler:^(NSError *error) { + handler(error); + }]; } - (FIRInstanceIDCheckinPreferences *)cachedCheckinPreferences { @@ -200,37 +185,10 @@ - (FIRInstanceIDCheckinPreferences *)cachedCheckinPreferences { // Couldn't find checkin credentials in keychain nor plist return nil; } - } else if (kOldCheckinPlistCount == checkinPlistContents.count) { - // same check as above but just to be extra sure that we cover all upgrade cases properly. - // TODO(chliangGoogle): Remove this case, after verifying it's not needed - if ([plistDeviceAuthID length] && [plistSecretToken length]) { - checkinPreferences = - [[FIRInstanceIDCheckinPreferences alloc] initWithDeviceID:plistDeviceAuthID - secretToken:plistSecretToken]; - } } [checkinPreferences updateWithCheckinPlistContents:checkinPlistContents]; return checkinPreferences; } -- (void)migrateCheckinItemIfNeeded { - // Check for checkin in the old location, using the legacy keys - // Query the keychain for deviceID and secret - NSData *dataInOldLocation = - [self.keychain dataForService:kFIRInstanceIDLegacyCheckinKeychainService - account:kFIRInstanceIDLegacyCheckinKeychainAccount]; - if (dataInOldLocation) { - // Save to new location - [self.keychain setData:dataInOldLocation - forService:kFIRInstanceIDCheckinKeychainService - account:self.bundleIdentifierForKeychainAccount - handler:nil]; - // Remove from old location - [self.keychain removeItemsMatchingService:kFIRInstanceIDLegacyCheckinKeychainService - account:kFIRInstanceIDLegacyCheckinKeychainAccount - handler:nil]; - } -} - @end diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.h b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.h index cd2e131..e7133e1 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.h +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.h @@ -29,7 +29,6 @@ FOUNDATION_EXPORT NSString *const kFIRInstanceID_CMD_RST; /// Notification used to deliver GCM messages for InstanceID. FOUNDATION_EXPORT NSString *const kFIRInstanceIDCheckinFetchedNotification; FOUNDATION_EXPORT NSString *const kFIRInstanceIDAPNSTokenNotification; -FOUNDATION_EXPORT NSString *const kFIRInstanceIDDefaultGCMTokenNotification; FOUNDATION_EXPORT NSString *const kFIRInstanceIDDefaultGCMTokenFailNotification; FOUNDATION_EXPORT NSString *const kFIRInstanceIDIdentityInvalidatedNotification; diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.m b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.m index 81f4620..c87013f 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.m +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDConstants.m @@ -22,7 +22,6 @@ // NOTIFICATIONS NSString *const kFIRInstanceIDCheckinFetchedNotification = @"com.google.gcm.notif-checkin-fetched"; NSString *const kFIRInstanceIDAPNSTokenNotification = @"com.firebase.iid.notif.apns-token"; -NSString *const kFIRInstanceIDDefaultGCMTokenNotification = @"com.firebase.iid.notif.fcm-token"; NSString *const kFIRInstanceIDDefaultGCMTokenFailNotification = @"com.firebase.iid.notif.fcm-token-fail"; diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDLogger.m b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDLogger.m index 2600d3b..489939d 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDLogger.m +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDLogger.m @@ -16,7 +16,7 @@ #import "FIRInstanceIDLogger.h" -#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" // Re-definition of FIRLogger service, as it is not included in :FIRAppHeaders target NSString *const kFIRInstanceIDLoggerService = @"[Firebase/InstanceID]"; diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDStore.m b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDStore.m index 1c7a0d0..ba68f96 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDStore.m +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDStore.m @@ -140,13 +140,11 @@ - (void)resetCredentialsIfNeeded { BOOL checkinPlistExists = [self.checkinStore hasCheckinPlist]; // Checkin info existed in backup excluded plist. Should not be a fresh install. if (checkinPlistExists) { - // FCM user can still have the old version of checkin, migration should only happen once. - [self.checkinStore migrateCheckinItemIfNeeded]; return; } - // reset checkin in keychain if a fresh install. - // set the old checkin preferences to unregister pre-registered tokens + // Resets checkin in keychain if a fresh install. + // Keychain can still exist even if app is uninstalled. FIRInstanceIDCheckinPreferences *oldCheckinPreferences = [self.checkinStore cachedCheckinPreferences]; diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m index bdc8701..bff9bae 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m @@ -25,8 +25,7 @@ #import "FIRInstanceIDUtilities.h" #import "NSError+FIRInstanceID.h" -#import -#import +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" // We can have a static int since this error should theoretically only // happen once (for the first time). If it repeats there is something diff --git a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m index 9eaafa7..d694ad8 100644 --- a/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m +++ b/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m @@ -21,11 +21,11 @@ #endif #import -#import #import #import "FIRInstanceID.h" #import "FIRInstanceIDConstants.h" #import "FIRInstanceIDLogger.h" +#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h" // Convert the macro to a string #define STR_EXPAND(x) #x diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRAppInternal.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRAppInternal.h new file mode 100644 index 0000000..9a0c943 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRAppInternal.h @@ -0,0 +1,173 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRApp.h" +#else +#import +#endif + +// The has_include is a workaround so the old IID needed for the FIS tests can find FIRErrors.h +#if __has_include("FirebaseCore/Sources/Private/FIRErrors.h") +#import "FirebaseCore/Sources/Private/FIRErrors.h" +#else +#import +#endif + +@class FIRComponentContainer; +@protocol FIRLibrary; + +/** + * The internal interface to FIRApp. This is meant for first-party integrators, who need to receive + * FIRApp notifications, log info about the success or failure of their configuration, and access + * other internal functionality of FIRApp. + * + * TODO(b/28296561): Restructure this header. + */ +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, FIRConfigType) { + FIRConfigTypeCore = 1, + FIRConfigTypeSDK = 2, +}; + +extern NSString *const kFIRDefaultAppName; +extern NSString *const kFIRAppReadyToConfigureSDKNotification; +extern NSString *const kFIRAppDeleteNotification; +extern NSString *const kFIRAppIsDefaultAppKey; +extern NSString *const kFIRAppNameKey; +extern NSString *const kFIRGoogleAppIDKey; + +/** + * The format string for the User Defaults key used for storing the data collection enabled flag. + * This includes formatting to append the Firebase App's name. + */ +extern NSString *const kFIRGlobalAppDataCollectionEnabledDefaultsKeyFormat; + +/** + * The plist key used for storing the data collection enabled flag. + */ +extern NSString *const kFIRGlobalAppDataCollectionEnabledPlistKey; + +/** + * A notification fired containing diagnostic information when SDK errors occur. + */ +extern NSString *const kFIRAppDiagnosticsNotification; + +/** @var FIRAuthStateDidChangeInternalNotification + @brief The name of the @c NSNotificationCenter notification which is posted when the auth state + changes (e.g. a new token has been produced, a user logs in or out). The object parameter of + the notification is a dictionary possibly containing the key: + @c FIRAuthStateDidChangeInternalNotificationTokenKey (the new access token.) If it does not + contain this key it indicates a sign-out event took place. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotification; + +/** @var FIRAuthStateDidChangeInternalNotificationTokenKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the new access token. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationTokenKey; + +/** @var FIRAuthStateDidChangeInternalNotificationAppKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the FIRApp associated with the auth instance. + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationAppKey; + +/** @var FIRAuthStateDidChangeInternalNotificationUIDKey + @brief A key present in the dictionary object parameter of the + @c FIRAuthStateDidChangeInternalNotification notification. The value associated with this + key will contain the new user's UID (or nil if there is no longer a user signed in). + */ +extern NSString *const FIRAuthStateDidChangeInternalNotificationUIDKey; + +@interface FIRApp () + +/** + * A flag indicating if this is the default app (has the default app name). + */ +@property(nonatomic, readonly) BOOL isDefaultApp; + +/* + * The container of interop SDKs for this app. + */ +@property(nonatomic) FIRComponentContainer *container; + +/** + * Creates an error for failing to configure a subspec service. This method is called by each + * FIRApp notification listener. + */ ++ (NSError *)errorForSubspecConfigurationFailureWithDomain:(NSString *)domain + errorCode:(FIRErrorCode)code + service:(NSString *)service + reason:(NSString *)reason; +/** + * Checks if the default app is configured without trying to configure it. + */ ++ (BOOL)isDefaultAppConfigured; + +/** + * Registers a given third-party library with the given version number to be reported for + * analytics. + * + * @param name Name of the library. + * @param version Version of the library. + */ ++ (void)registerLibrary:(nonnull NSString *)name withVersion:(nonnull NSString *)version; + +/** + * Registers a given internal library with the given version number to be reported for + * analytics. + * + * @param library Optional parameter for component registration. + * @param name Name of the library. + * @param version Version of the library. + */ ++ (void)registerInternalLibrary:(nonnull Class)library + withName:(nonnull NSString *)name + withVersion:(nonnull NSString *)version; + +/** + * A concatenated string representing all the third-party libraries and version numbers. + */ ++ (NSString *)firebaseUserAgent; + +/** + * Used by each SDK to send logs about SDK configuration status to Clearcut. + * + * @note This API is a no-op, please remove calls to it. + */ +- (void)sendLogsWithServiceName:(NSString *)serviceName + version:(NSString *)version + error:(NSError *)error; + +/** + * Can be used by the unit tests in eack SDK to reset FIRApp. This method is thread unsafe. + */ ++ (void)resetApps; + +/** + * Can be used by the unit tests in each SDK to set customized options. + */ +- (instancetype)initInstanceWithName:(NSString *)name options:(FIROptions *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponent.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponent.h new file mode 100644 index 0000000..cb51ee7 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponent.h @@ -0,0 +1,91 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRApp; +@class FIRComponentContainer; + +NS_ASSUME_NONNULL_BEGIN + +/// Provides a system to clean up cached instances returned from the component system. +NS_SWIFT_NAME(ComponentLifecycleMaintainer) +@protocol FIRComponentLifecycleMaintainer +/// The associated app will be deleted, clean up any resources as they are about to be deallocated. +- (void)appWillBeDeleted:(FIRApp *)app; +@end + +typedef _Nullable id (^FIRComponentCreationBlock)(FIRComponentContainer *container, + BOOL *isCacheable) + NS_SWIFT_NAME(ComponentCreationBlock); + +@class FIRDependency; + +/// Describes the timing of instantiation. Note: new components should default to lazy unless there +/// is a strong reason to be eager. +typedef NS_ENUM(NSInteger, FIRInstantiationTiming) { + FIRInstantiationTimingLazy, + FIRInstantiationTimingAlwaysEager, + FIRInstantiationTimingEagerInDefaultApp +} NS_SWIFT_NAME(InstantiationTiming); + +/// A component that can be used from other Firebase SDKs. +NS_SWIFT_NAME(Component) +@interface FIRComponent : NSObject + +/// The protocol describing functionality provided from the Component. +@property(nonatomic, strong, readonly) Protocol *protocol; + +/// The timing of instantiation. +@property(nonatomic, readonly) FIRInstantiationTiming instantiationTiming; + +/// An array of dependencies for the component. +@property(nonatomic, copy, readonly) NSArray *dependencies; + +/// A block to instantiate an instance of the component with the appropriate dependencies. +@property(nonatomic, copy, readonly) FIRComponentCreationBlock creationBlock; + +// There's an issue with long NS_SWIFT_NAMES that causes compilation to fail, disable clang-format +// for the next two methods. +// clang-format off + +/// Creates a component with no dependencies that will be lazily initialized. ++ (instancetype)componentWithProtocol:(Protocol *)protocol + creationBlock:(FIRComponentCreationBlock)creationBlock +NS_SWIFT_NAME(init(_:creationBlock:)); + +/// Creates a component to be registered with the component container. +/// +/// @param protocol - The protocol describing functionality provided by the component. +/// @param instantiationTiming - When the component should be initialized. Use .lazy unless there's +/// a good reason to be instantiated earlier. +/// @param dependencies - Any dependencies the `implementingClass` has, optional or required. +/// @param creationBlock - A block to instantiate the component with a container, and if +/// @return A component that can be registered with the component container. ++ (instancetype)componentWithProtocol:(Protocol *)protocol + instantiationTiming:(FIRInstantiationTiming)instantiationTiming + dependencies:(NSArray *)dependencies + creationBlock:(FIRComponentCreationBlock)creationBlock +NS_SWIFT_NAME(init(_:instantiationTiming:dependencies:creationBlock:)); + +// clang-format on + +/// Unavailable. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponentContainer.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponentContainer.h new file mode 100644 index 0000000..db2bafe --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponentContainer.h @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#import + +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponentType.h") +#import "FirebaseCore/Sources/Private/FIRComponentType.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#else +#import +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/// A type-safe macro to retrieve a component from a container. This should be used to retrieve +/// components instead of using the container directly. +#define FIR_COMPONENT(type, container) \ + [FIRComponentType> instanceForProtocol:@protocol(type) inContainer:container] + +@class FIRApp; + +/// A container that holds different components that are registered via the +/// `registerAsComponentRegistrant:` call. These classes should conform to `FIRComponentRegistrant` +/// in order to properly register components for Core. +NS_SWIFT_NAME(FirebaseComponentContainer) +@interface FIRComponentContainer : NSObject + +/// A weak reference to the app that an instance of the container belongs to. +@property(nonatomic, weak, readonly) FIRApp *app; + +/// Unavailable. Use the `container` property on `FIRApp`. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponentType.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponentType.h new file mode 100644 index 0000000..6f2aca7 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRComponentType.h @@ -0,0 +1,34 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRComponentContainer; + +NS_ASSUME_NONNULL_BEGIN + +/// Do not use directly. A placeholder type in order to provide a macro that will warn users of +/// mis-matched protocols. +NS_SWIFT_NAME(ComponentType) +@interface FIRComponentType<__covariant T> : NSObject + +/// Do not use directly. A factory method to retrieve an instance that provides a specific +/// functionality. ++ (T)instanceForProtocol:(Protocol *)protocol inContainer:(FIRComponentContainer *)container; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h new file mode 100644 index 0000000..76c0c05 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h @@ -0,0 +1,35 @@ +/* + * Copyright 2019 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FIRDiagnosticsData; +@class FIROptions; + +NS_ASSUME_NONNULL_BEGIN + +/** Connects FIRCore with the CoreDiagnostics library. */ +@interface FIRCoreDiagnosticsConnector : NSObject + +/** Logs FirebaseCore related data. + * + * @param options The options object containing data to log. + */ ++ (void)logCoreTelemetryWithOptions:(FIROptions *)options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRDependency.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRDependency.h new file mode 100644 index 0000000..46e9b7e --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRDependency.h @@ -0,0 +1,45 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// A dependency on a specific protocol's functionality. +NS_SWIFT_NAME(Dependency) +@interface FIRDependency : NSObject + +/// The protocol describing functionality being depended on. +@property(nonatomic, strong, readonly) Protocol *protocol; + +/// A flag to specify if the dependency is required or not. +@property(nonatomic, readonly) BOOL isRequired; + +/// Initializes a dependency that is required. Calls `initWithProtocol:isRequired` with `YES` for +/// the required parameter. +/// Creates a required dependency on the specified protocol's functionality. ++ (instancetype)dependencyWithProtocol:(Protocol *)protocol; + +/// Creates a dependency on the specified protocol's functionality and specify if it's required for +/// the class's functionality. ++ (instancetype)dependencyWithProtocol:(Protocol *)protocol isRequired:(BOOL)required; + +/// Use `dependencyWithProtocol:isRequired:` instead. +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRErrorCode.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRErrorCode.h new file mode 100644 index 0000000..c90d9ee --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRErrorCode.h @@ -0,0 +1,39 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** Error codes in Firebase error domain. */ +typedef NS_ENUM(NSInteger, FIRErrorCode) { + /** + * Unknown error. + */ + FIRErrorCodeUnknown = 0, + /** + * Loading data from the GoogleService-Info.plist file failed. This is a fatal error and should + * not be ignored. Further calls to the API will fail and/or possibly cause crashes. + */ + FIRErrorCodeInvalidPlistFile = -100, + + /** + * Validating the Google App ID format failed. + */ + FIRErrorCodeInvalidAppID = -101, + + /** + * Error code for failing to configure a specific service. It's deprecated, but + * still used after copybara. + */ + FIRErrorCodeConfigFailed = -114, +}; diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRErrors.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRErrors.h new file mode 100644 index 0000000..19e4732 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRErrors.h @@ -0,0 +1,24 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#include "FIRErrorCode.h" + +extern NSString *const kFirebaseErrorDomain; +extern NSString *const kFirebaseConfigErrorDomain; +extern NSString *const kFirebaseCoreErrorDomain; +extern NSString *const kFirebasePerfErrorDomain; diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h new file mode 100644 index 0000000..bfff73e --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h @@ -0,0 +1,39 @@ +// Copyright 2019 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRHeartbeatInfo : NSObject + +// Enum representing the different heartbeat codes. +typedef NS_ENUM(NSInteger, FIRHeartbeatInfoCode) { + FIRHeartbeatInfoCodeNone = 0, + FIRHeartbeatInfoCodeSDK = 1, + FIRHeartbeatInfoCodeGlobal = 2, + FIRHeartbeatInfoCodeCombined = 3, +}; + +/** + * Get heartbeat code requred for the sdk. + * @param heartbeatTag String representing the sdk heartbeat tag. + * @return Heartbeat code indicating whether or not an sdk/global heartbeat + * needs to be sent + */ ++ (FIRHeartbeatInfoCode)heartbeatCodeForTag:(NSString *)heartbeatTag; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRLibrary.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRLibrary.h new file mode 100644 index 0000000..e7a9e07 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRLibrary.h @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FIRLibrary_h +#define FIRLibrary_h + +#import + +// The has_include is a workaround so the old IID needed for the FIS tests can find the headers. +#if __has_include("FirebaseCore/Sources/Private/FIRComponent.h") +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#else +#import +#endif + +@class FIRApp; + +NS_ASSUME_NONNULL_BEGIN + +/// Provide an interface to register a library for userAgent logging and availability to others. +NS_SWIFT_NAME(Library) +@protocol FIRLibrary + +/// Returns one or more FIRComponents that will be registered in +/// FIRApp and participate in dependency resolution and injection. ++ (NSArray *)componentsToRegister; + +@optional +/// Implement this method if the library needs notifications for lifecycle events. This method is +/// called when the developer calls `FirebaseApp.configure()`. ++ (void)configureWithApp:(FIRApp *)app; + +@end + +NS_ASSUME_NONNULL_END + +#endif /* FIRLibrary_h */ diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRLogger.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRLogger.h new file mode 100644 index 0000000..6fd7784 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIRLogger.h @@ -0,0 +1,156 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIRLoggerLevel.h" +#else +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + * The Firebase services used in Firebase logger. + */ +typedef NSString *const FIRLoggerService; + +extern FIRLoggerService kFIRLoggerABTesting; +extern FIRLoggerService kFIRLoggerAdMob; +extern FIRLoggerService kFIRLoggerAnalytics; +extern FIRLoggerService kFIRLoggerAuth; +extern FIRLoggerService kFIRLoggerCrash; +extern FIRLoggerService kFIRLoggerCore; +extern FIRLoggerService kFIRLoggerMLKit; +extern FIRLoggerService kFIRLoggerPerf; +extern FIRLoggerService kFIRLoggerRemoteConfig; + +/** + * The key used to store the logger's error count. + */ +extern NSString *const kFIRLoggerErrorCountKey; + +/** + * The key used to store the logger's warning count. + */ +extern NSString *const kFIRLoggerWarningCountKey; + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +/** + * Enables or disables Analytics debug mode. + * If set to YES, the logging level for Analytics will be set to FIRLoggerLevelDebug. + * Enabling the debug mode has no effect if the app is running from App Store. + * (required) analytics debug mode flag. + */ +void FIRSetAnalyticsDebugMode(BOOL analyticsDebugMode); + +/** + * Changes the default logging level of FIRLoggerLevelNotice to a user-specified level. + * The default level cannot be set above FIRLoggerLevelNotice if the app is running from App Store. + * (required) log level (one of the FIRLoggerLevel enum values). + */ +void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel); + +/** + * Checks if the specified logger level is loggable given the current settings. + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) whether or not this function is called from the Analytics component. + */ +BOOL FIRIsLoggableLevel(FIRLoggerLevel loggerLevel, BOOL analyticsComponent); + +/** + * Logs a message to the Xcode console and the device log. If running from AppStore, will + * not log any messages with a level higher than FIRLoggerLevelNotice to avoid log spamming. + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) service name of type FIRLoggerService. + * (required) message code starting with "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * (required) message string which can be a format string. + * (optional) variable arguments list obtained from calling va_start, used when message is a format + * string. + */ +extern void FIRLogBasic(FIRLoggerLevel level, + FIRLoggerService service, + NSString *messageCode, + NSString *message, +// On 64-bit simulators, va_list is not a pointer, so cannot be marked nullable +// See: http://stackoverflow.com/q/29095469 +#if __LP64__ && TARGET_OS_SIMULATOR || TARGET_OS_OSX + va_list args_ptr +#else + va_list _Nullable args_ptr +#endif +); + +/** + * The following functions accept the following parameters in order: + * (required) service name of type FIRLoggerService. + * (required) message code starting from "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * See go/firebase-log-proposal for details. + * (required) message string which can be a format string. + * (optional) the list of arguments to substitute into the format string. + * Example usage: + * FIRLogError(kFIRLoggerCore, @"I-COR000001", @"Configuration of %@ failed.", app.name); + */ +extern void FIRLogError(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogWarning(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogNotice(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogInfo(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); +extern void FIRLogDebug(FIRLoggerService service, NSString *messageCode, NSString *message, ...) + NS_FORMAT_FUNCTION(3, 4); + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +@interface FIRLoggerWrapper : NSObject + +/** + * Objective-C wrapper for FIRLogBasic to allow weak linking to FIRLogger + * (required) log level (one of the FIRLoggerLevel enum values). + * (required) service name of type FIRLoggerService. + * (required) message code starting with "I-" which means iOS, followed by a capitalized + * three-character service identifier and a six digit integer message ID that is unique + * within the service. + * An example of the message code is @"I-COR000001". + * (required) message string which can be a format string. + * (optional) variable arguments list obtained from calling va_start, used when message is a format + * string. + */ + ++ (void)logWithLevel:(FIRLoggerLevel)level + withService:(FIRLoggerService)service + withCode:(NSString *)messageCode + withMessage:(NSString *)message + withArgs:(va_list)args; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIROptionsInternal.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIROptionsInternal.h new file mode 100644 index 0000000..acaf458 --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FIROptionsInternal.h @@ -0,0 +1,119 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if SWIFT_PACKAGE +// TODO(paulb777): Investigate if there's a common strategy for both Cocoapods and Swift PM. +#import "FIROptions.h" +#else +#import +#endif + +/** + * Keys for the strings in the plist file. + */ +extern NSString *const kFIRAPIKey; +extern NSString *const kFIRTrackingID; +extern NSString *const kFIRGoogleAppID; +extern NSString *const kFIRClientID; +extern NSString *const kFIRGCMSenderID; +extern NSString *const kFIRAndroidClientID; +extern NSString *const kFIRDatabaseURL; +extern NSString *const kFIRStorageBucket; +extern NSString *const kFIRBundleID; +extern NSString *const kFIRProjectID; + +/** + * Keys for the plist file name + */ +extern NSString *const kServiceInfoFileName; + +extern NSString *const kServiceInfoFileType; + +/** + * This header file exposes the initialization of FIROptions to internal use. + */ +@interface FIROptions () + +/** + * resetDefaultOptions and initInternalWithOptionsDictionary: are exposed only for unit tests. + */ ++ (void)resetDefaultOptions; + +/** + * Initializes the options with dictionary. The above strings are the keys of the dictionary. + * This is the designated initializer. + */ +- (instancetype)initInternalWithOptionsDictionary:(NSDictionary *)serviceInfoDictionary; + +/** + * defaultOptions and defaultOptionsDictionary are exposed in order to be used in FIRApp and + * other first party services. + */ ++ (FIROptions *)defaultOptions; + ++ (NSDictionary *)defaultOptionsDictionary; + +/** + * Indicates whether or not Analytics collection was explicitly enabled via a plist flag or at + * runtime. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionExplicitlySet; + +/** + * Whether or not Analytics Collection was enabled. Analytics Collection is enabled unless + * explicitly disabled in GoogleService-Info.plist. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionEnabled; + +/** + * Whether or not Analytics Collection was completely disabled. If YES, then + * isAnalyticsCollectionEnabled will be NO. + */ +@property(nonatomic, readonly) BOOL isAnalyticsCollectionDeactivated; + +/** + * The version ID of the client library, e.g. @"1100000". + */ +@property(nonatomic, readonly, copy) NSString *libraryVersionID; + +/** + * The flag indicating whether this object was constructed with the values in the default plist + * file. + */ +@property(nonatomic) BOOL usingOptionsFromDefaultPlist; + +/** + * Whether or not Measurement was enabled. Measurement is enabled unless explicitly disabled in + * GoogleService-Info.plist. + */ +@property(nonatomic, readonly) BOOL isMeasurementEnabled; + +/** + * Whether or not Analytics was enabled in the developer console. + */ +@property(nonatomic, readonly) BOOL isAnalyticsEnabled; + +/** + * Whether or not SignIn was enabled in the developer console. + */ +@property(nonatomic, readonly) BOOL isSignInEnabled; + +/** + * Whether or not editing is locked. This should occur after FIROptions has been set on a FIRApp. + */ +@property(nonatomic, getter=isEditingLocked) BOOL editingLocked; + +@end diff --git a/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FirebaseCoreInternal.h b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FirebaseCoreInternal.h new file mode 100644 index 0000000..93af6cb --- /dev/null +++ b/Pods/FirebaseInstanceID/FirebaseCore/Sources/Private/FirebaseCoreInternal.h @@ -0,0 +1,31 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// An umbrella header, for any other libraries in this repo to access Firebase Public and Private +// headers. Any package manager complexity should be handled here. + +#if SWIFT_PACKAGE +@import FirebaseCore; +#else +#import +#endif + +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainer.h" +#import "FirebaseCore/Sources/Private/FIRDependency.h" +#import "FirebaseCore/Sources/Private/FIRHeartbeatInfo.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" diff --git a/Pods/FirebaseInstanceID/README.md b/Pods/FirebaseInstanceID/README.md index ab36632..d778205 100644 --- a/Pods/FirebaseInstanceID/README.md +++ b/Pods/FirebaseInstanceID/README.md @@ -1,12 +1,29 @@ -# Firebase iOS Open Source Development - [![Actions Status][gh-core-badge]][gh-actions] - [![Actions Status][gh-dynamiclinks-badge]][gh-actions] - [![Actions Status][gh-datatransport-badge]][gh-actions] - [![Actions Status][gh-storage-badge]][gh-actions] - [![Actions Status][gh-zip-badge]][gh-actions] - [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains all Firebase iOS SDK source except FirebaseAnalytics, +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The @@ -72,12 +89,16 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least the following software: - * Xcode 10.1 (or later) + * Xcode 10.3 (or later) * CocoaPods 1.7.2 (or later) * [CocoaPods generate](https://github.com/square/cocoapods-generate) @@ -108,6 +129,10 @@ Firestore has a self contained Xcode project. See See [AddNewPod.md](AddNewPod.md). +### Managing Headers and Imports + +See [HeadersImports.md](HeadersImports.md). + ### Code Formatting To ensure that the code is formatted consistently, run the script @@ -119,8 +144,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -134,7 +159,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -165,18 +190,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -202,32 +235,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -257,8 +292,20 @@ Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). [gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg [gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg [gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg [gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg [gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg [gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/FirebaseMLCommon/CHANGELOG.md b/Pods/FirebaseMLCommon/CHANGELOG.md index a9f290d..1225aaa 100755 --- a/Pods/FirebaseMLCommon/CHANGELOG.md +++ b/Pods/FirebaseMLCommon/CHANGELOG.md @@ -1,10 +1,23 @@ -# 2019-##-## -- v0.19.0 +# 2020-05-19 -- v0.20.0 +- Adds `getLatestModelFilePath(_:completion:)` API to `ModelManager` class for + getting the absolute file path on the device for a downloaded custom remote + model. + +# 2019-10-08 -- v0.19.0 - **Breaking change:** Updates `ModelManager` with the following API changes: - - Updates `download(_:)` to `download(_:conditions:)`. - - Updates `isRemoteModelDownloaded(_:)` to `isModelDownloaded(_:)`. - - Adds `deleteDownloadedModel(_:completion:)`. - - Removes the `RemoteModel` and `LocalModel` registration APIs; you no longer - need to register remote and local models with the `ModelManager`. + - Added `modelManager(app:)` for a custom Firebase app. Note that download + management for custom Firebase apps is currently only supported for the + Translate SDK. + - Removed the `RemoteModel` and `LocalModel` registration APIs. You no + longer need to register models before using them. + - Added a model download conditions parameter in the + `download(_:conditions)` API to make it easier to tie the conditions to + specific download requests. You can fully control when to download a model + for the first time and when to check for model updates via this API. + - Updated `isRemoteModelDownloaded(_:)` to `isModelDownloaded(_:)`. + - Added `deleteDownloadedModel(_:completion:)` to delete downloaded models to + provide you with more flexibility for managing disk space on your user's + devices. - **Breaking change:** `RemoteModel` and `LocalModel` initializers have been disabled. New subclasses have been added for AutoML, Custom, and Translate SDKs. Use the intializers for those subclasses to create instances of remote diff --git a/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon b/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon index ffa830c..8cc2f92 100755 Binary files a/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon and b/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon differ diff --git a/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/Headers/FIRModelManager.h b/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/Headers/FIRModelManager.h index 54f62ac..283f213 100755 --- a/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/Headers/FIRModelManager.h +++ b/Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/Headers/FIRModelManager.h @@ -46,9 +46,12 @@ NS_SWIFT_NAME(ModelManager) * the model has already been downloaded, a request is made to check if a newer version of the model * is available for download. If available, the new version of the model is downloaded. * - * @discussion To be notified when a model download request completes, observe the - * '.firebaseMLModelDownloadDidSucceed` and `.firebaseMLModelDownloadDidFail` notifications - * defined in `FIRModelDownloadNotifications.h`. + * To be notified when a model download request completes, observe the + * `.firebaseMLModelDownloadDidSucceed` (indicating model is ready to use) and + * `.firebaseMLModelDownloadDidFail` notifications defined in + * `FIRModelDownloadNotifications.h`. If the latest model is already downloaded, completes + * without additional work and posts a `.firebaseMLModelDownloadDidSucceed` notification, + * indicating that the model is ready to use. * * @param remoteModel The model to download. * @param conditions The conditions for downloading the model. @@ -68,6 +71,19 @@ NS_SWIFT_NAME(ModelManager) - (void)deleteDownloadedModel:(FIRRemoteModel *)remoteModel completion:(void (^)(NSError *_Nullable error))completion; +/** + * Gets the absolute file path on the device for the last downloaded model. Please do not use this + * API if you intend to use this model through `ModelInterpreter`. + * + * @param remoteModel The downloaded model. + * @param completion Handler to call back returning the absolute file path of the downloaded model. + * This will return `nil` and will fail with the given `error` if the model is not yet downloaded on + * the device or valid custom remote model is not provided. + */ +- (void)getLatestModelFilePath:(FIRRemoteModel *)remoteModel + completion:(void (^)(NSString *_Nullable filePath, + NSError *_Nullable error))completion; + @end NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseMLVision/CHANGELOG.md b/Pods/FirebaseMLVision/CHANGELOG.md index 8b1f371..b33cc82 100755 --- a/Pods/FirebaseMLVision/CHANGELOG.md +++ b/Pods/FirebaseMLVision/CHANGELOG.md @@ -1,3 +1,11 @@ +# 2020-05-19 -- v0.20.0 +- Bug fixes. + +# 2019-10-08 -- v0.19.0 +- **Breaking change:** On-device text recognition API for iOS no longer supports + i386 architecture, but continues to support x86_64, arm64, and armv7 + architectures. + # 2019-09-03 -- v0.18.0 - Bug fixes. - [INTERNAL] Removed the dependency on `GoogleMobileVision` pod. diff --git a/Pods/FirebaseMLVision/Frameworks/FirebaseMLVision.framework/FirebaseMLVision b/Pods/FirebaseMLVision/Frameworks/FirebaseMLVision.framework/FirebaseMLVision index 3fd2695..028f810 100755 Binary files a/Pods/FirebaseMLVision/Frameworks/FirebaseMLVision.framework/FirebaseMLVision and b/Pods/FirebaseMLVision/Frameworks/FirebaseMLVision.framework/FirebaseMLVision differ diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h index 1937a32..0504aa7 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h @@ -560,6 +560,9 @@ typedef void (^GTMSessionFetcherRetryBlock)(BOOL suggestedWillRetry, NSError * GTM_NULLABLE_TYPE error, GTMSessionFetcherRetryResponse response); +API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)) +typedef void (^GTMSessionFetcherMetricsCollectionBlock)(NSURLSessionTaskMetrics *metrics); + typedef void (^GTMSessionFetcherTestResponse)(NSHTTPURLResponse * GTM_NULLABLE_TYPE response, NSData * GTM_NULLABLE_TYPE data, NSError * GTM_NULLABLE_TYPE error); @@ -996,6 +999,13 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // See comments at the top of this file. @property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherRetryBlock retryBlock; +// The optional block for collecting the metrics of the present session. +// +// This is called on the callback queue. +@property(atomic, copy, GTM_NULLABLE) + GTMSessionFetcherMetricsCollectionBlock metricsCollectionBlock API_AVAILABLE( + ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)); + // Retry intervals must be strictly less than maxRetryInterval, else // they will be limited to maxRetryInterval and no further retries will // be attempted. Setting maxRetryInterval to 0.0 will reset it to the diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m index c248847..3dc6459 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m @@ -551,8 +551,11 @@ - (void)beginFetchMayDelay:(BOOL)mayDelay fetchRequest); } #endif + // If priorSessionIdentifier is allowed to stay non-nil, a background session can + // still be created. + priorSessionIdentifier = nil; [self setSessionIdentifierInternal:nil]; - self.useBackgroundSession = NO; + self.usingBackgroundSession = NO; } #if GTM_ALLOW_INSECURE_REQUESTS @@ -902,7 +905,7 @@ - (void)beginFetchMayDelay:(BOOL)mayDelay #if GTM_BACKGROUND_TASK_FETCHING id app = [[self class] fetcherUIApplication]; // Background tasks seem to interfere with out-of-process uploads and downloads. - if (app && !self.skipBackgroundTask && !self.useBackgroundSession) { + if (app && !self.skipBackgroundTask && !self.usingBackgroundSession) { // Tell UIApplication that we want to continue even when the app is in the // background. #if DEBUG @@ -1792,6 +1795,9 @@ - (void)releaseCallbacks { self.retryBlock = nil; self.testBlock = nil; self.resumeDataBlock = nil; + if (@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) { + self.metricsCollectionBlock = nil; + } } - (void)forgetSessionIdentifierForFetcher { @@ -2850,6 +2856,21 @@ - (void)URLSession:(NSURLSession *)session }]; } +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics + API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)) { + @synchronized(self) { + GTMSessionMonitorSynchronized(self); + GTMSessionFetcherMetricsCollectionBlock metricsCollectionBlock = _metricsCollectionBlock; + if (metricsCollectionBlock) { + [self invokeOnCallbackQueueUnlessStopped:^{ + metricsCollectionBlock(metrics); + }]; + } + } +} + #if TARGET_OS_IPHONE - (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSessionDidFinishEventsForBackgroundURLSession:%@", @@ -3459,6 +3480,7 @@ + (GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler sendProgressBlock = _sendProgressBlock, willCacheURLResponseBlock = _willCacheURLResponseBlock, retryBlock = _retryBlock, + metricsCollectionBlock = _metricsCollectionBlock, retryFactor = _retryFactor, allowedInsecureSchemes = _allowedInsecureSchemes, allowLocalhostRequest = _allowLocalhostRequest, diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h index fb743ca..312abaa 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h @@ -63,6 +63,9 @@ extern NSString *const kGTMSessionFetcherServiceSessionKey; @property(atomic, assign) NSTimeInterval maxRetryInterval; @property(atomic, assign) NSTimeInterval minRetryInterval; @property(atomic, copy, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, id) *properties; +@property(atomic, copy, GTM_NULLABLE) + GTMSessionFetcherMetricsCollectionBlock metricsCollectionBlock API_AVAILABLE( + ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)); #if GTM_BACKGROUND_TASK_FETCHING @property(atomic, assign) BOOL skipBackgroundTask; diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m index bd44787..f9942c0 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m @@ -121,6 +121,7 @@ @implementation GTMSessionFetcherService { retryBlock = _retryBlock, maxRetryInterval = _maxRetryInterval, minRetryInterval = _minRetryInterval, + metricsCollectionBlock = _metricsCollectionBlock, properties = _properties, unusedSessionTimeout = _unusedSessionTimeout, testBlock = _testBlock; @@ -186,6 +187,9 @@ - (id)fetcherWithRequest:(NSURLRequest *)request fetcher.retryBlock = self.retryBlock; fetcher.maxRetryInterval = self.maxRetryInterval; fetcher.minRetryInterval = self.minRetryInterval; + if (@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) { + fetcher.metricsCollectionBlock = self.metricsCollectionBlock; + } fetcher.properties = self.properties; fetcher.service = self; if (self.cookieStorageMethod >= 0) { @@ -1281,6 +1285,14 @@ - (void)URLSession:(NSURLSession *)session didCompleteWithError:error]; } +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics + API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)) { + id fetcher = [self fetcherForTask:task]; + [fetcher URLSession:session task:task didFinishCollectingMetrics:metrics]; +} + // NSURLSessionDataDelegate protocol methods. - (void)URLSession:(NSURLSession *)session diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m b/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m index 4ea43f6..7759bb1 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m +++ b/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m @@ -1455,11 +1455,13 @@ - (void)chunkFetcher:(GTMSessionFetcher *)chunkFetcher // TODO // Maybe here we can check to see if the request had x goog content length set. (the file length one). - int64_t previousContentLength = - [[chunkFetcher.request valueForHTTPHeaderField:@"Content-Length"] longLongValue]; + NSString *previousContentLengthValue = + [chunkFetcher.request valueForHTTPHeaderField:@"Content-Length"]; // The Content-Length header may not be present if the chunk fetcher was recreated from // a background session. - BOOL hasKnownChunkSize = (previousContentLength > 0); + BOOL hasKnownChunkSize = (previousContentLengthValue != nil); + int64_t previousContentLength = [previousContentLengthValue longLongValue]; + BOOL needsQuery = (!hasKnownChunkSize && !isUploadStatusStopped); if (error || (needsQuery && !isQueryFetch)) { @@ -1504,7 +1506,9 @@ - (void)chunkFetcher:(GTMSessionFetcher *)chunkFetcher chunkFetcher, chunkFetcher.request.allHTTPHeaderFields, responseHeaders); #endif - if (isUploadStatusStopped || (_currentOffset > _uploadFileLength && _uploadFileLength > 0)) { + if (isUploadStatusStopped || + (!_uploadData && _uploadFileLength == 0) || + (_currentOffset > _uploadFileLength && _uploadFileLength > 0)) { // This was the last chunk. if (error == nil && uploadStatus == kStatusCancelled) { // Report cancelled status as an error. diff --git a/Pods/GoogleAPIClientForREST/Source/GTLRDefines.h b/Pods/GoogleAPIClientForREST/Source/GTLRDefines.h index 726fbbd..e768527 100644 --- a/Pods/GoogleAPIClientForREST/Source/GTLRDefines.h +++ b/Pods/GoogleAPIClientForREST/Source/GTLRDefines.h @@ -17,9 +17,7 @@ // GTLRDefines.h // -// Ensure Apple's conditionals we depend on are defined. -#import -#import +#import // These can be redefined via a prefix if you are prefixing symbols to prefix // the names used in strings. Something like: @@ -32,7 +30,7 @@ #define GTLR_CLASSNAME_CSTR(x) _GTLR_CLASSNAME_HELPER(x) #endif -// Provide a common definition for externing constants/functions +// The ServiceGenerator used to use this, now it just uses `FOUNDATION_EXTERN`. #if defined(__cplusplus) #define GTLR_EXTERN extern "C" #else @@ -68,42 +66,3 @@ #define GTLR_DEBUG_LOG(...) do { } while (0) #endif #endif - -#ifndef GTLR_DEBUG_ASSERT_CURRENT_QUEUE - #define GTLR_ASSERT_CURRENT_QUEUE_DEBUG(targetQueue) \ - GTLR_DEBUG_ASSERT(0 == strcmp(GTLR_QUEUE_NAME(targetQueue), \ - GTLR_QUEUE_NAME(DISPATCH_CURRENT_QUEUE_LABEL)), \ - @"Current queue is %s (expected %s)", \ - GTLR_QUEUE_NAME(DISPATCH_CURRENT_QUEUE_LABEL), \ - GTLR_QUEUE_NAME(targetQueue)) - - #define GTLR_QUEUE_NAME(queue) \ - (strlen(dispatch_queue_get_label(queue)) > 0 ? dispatch_queue_get_label(queue) : "unnamed") -#endif // GTLR_ASSERT_CURRENT_QUEUE_DEBUG - -// Sanity check the min versions. - -#if (defined(TARGET_OS_TV) && TARGET_OS_TV) || (defined(TARGET_OS_WATCH) && TARGET_OS_WATCH) - // No min checks for these two. -#elif TARGET_OS_IPHONE - #if !defined(__IPHONE_9_0) || (__IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0) - #error "This project expects to be compiled with the iOS 9.0 SDK (or later)." - #endif - #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0 - #error "The minimum supported iOS version is 7.0." - #endif -#elif TARGET_OS_MAC - #if !defined(MAC_OS_X_VERSION_10_10) || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_10) - #error "This project expects to be compiled with the OS X 10.10 SDK (or later)." - #endif - #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9 - #error "The minimum supported OS X version is 10.9." - #endif -#else - #error "Unknown target platform." -#endif - -// Version marker used to validate the generated sources against the library -// version. The will be changed any time the library makes a change that means -// past sources need to be regenerated. -#define GTLR_RUNTIME_VERSION 3000 diff --git a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionObjects.h b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionObjects.h index 6c355eb..239a2ff 100644 --- a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionObjects.h +++ b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionObjects.h @@ -10,7 +10,9 @@ // Documentation: // https://cloud.google.com/vision/ -#if GTLR_BUILT_AS_FRAMEWORK +#if SWIFT_PACKAGE || GTLR_USE_MODULAR_IMPORT + @import GoogleAPIClientForRESTCore; +#elif GTLR_BUILT_AS_FRAMEWORK #import "GTLR/GTLRObject.h" #else #import "GTLRObject.h" @@ -285,32 +287,32 @@ NS_ASSUME_NONNULL_BEGIN * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Cancelled; /** * The request is done and no item has been successfully processed. * * Value: "FAILED" */ -GTLR_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Failed; +FOUNDATION_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Failed; /** * Request is actively being processed. * * Value: "PROCESSING" */ -GTLR_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Processing; +FOUNDATION_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Processing; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_StateUnspecified; /** * The request is done and at least one item has been successfully * processed. * * Value: "SUCCESSFUL" */ -GTLR_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Successful; +FOUNDATION_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Successful; // ---------------------------------------------------------------------------- // GTLRVision_Block.blockType @@ -320,37 +322,37 @@ GTLR_EXTERN NSString * const kGTLRVision_BatchOperationMetadata_State_Successful * * Value: "BARCODE" */ -GTLR_EXTERN NSString * const kGTLRVision_Block_BlockType_Barcode; +FOUNDATION_EXTERN NSString * const kGTLRVision_Block_BlockType_Barcode; /** * Image block. * * Value: "PICTURE" */ -GTLR_EXTERN NSString * const kGTLRVision_Block_BlockType_Picture; +FOUNDATION_EXTERN NSString * const kGTLRVision_Block_BlockType_Picture; /** * Horizontal/vertical line box. * * Value: "RULER" */ -GTLR_EXTERN NSString * const kGTLRVision_Block_BlockType_Ruler; +FOUNDATION_EXTERN NSString * const kGTLRVision_Block_BlockType_Ruler; /** * Table block. * * Value: "TABLE" */ -GTLR_EXTERN NSString * const kGTLRVision_Block_BlockType_Table; +FOUNDATION_EXTERN NSString * const kGTLRVision_Block_BlockType_Table; /** * Regular text block. * * Value: "TEXT" */ -GTLR_EXTERN NSString * const kGTLRVision_Block_BlockType_Text; +FOUNDATION_EXTERN NSString * const kGTLRVision_Block_BlockType_Text; /** * Unknown block type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_Block_BlockType_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_Block_BlockType_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_DetectedBreak.type @@ -360,38 +362,38 @@ GTLR_EXTERN NSString * const kGTLRVision_Block_BlockType_Unknown; * * Value: "EOL_SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_EolSureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_EolSureSpace; /** * End-line hyphen that is not present in text; does not co-occur with * `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`. * * Value: "HYPHEN" */ -GTLR_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_Hyphen; +FOUNDATION_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_Hyphen; /** * Line break that ends a paragraph. * * Value: "LINE_BREAK" */ -GTLR_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_LineBreak; +FOUNDATION_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_LineBreak; /** * Regular space. * * Value: "SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_Space; +FOUNDATION_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_Space; /** * Sure space (very wide). * * Value: "SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_SureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_SureSpace; /** * Unknown break label type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_FaceAnnotation.angerLikelihood @@ -401,37 +403,37 @@ GTLR_EXTERN NSString * const kGTLRVision_DetectedBreak_Type_Unknown; * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_FaceAnnotation.blurredLikelihood @@ -441,37 +443,37 @@ GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_AngerLikelihood_VeryUnli * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_FaceAnnotation.headwearLikelihood @@ -481,37 +483,37 @@ GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_BlurredLikelihood_VeryUn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_FaceAnnotation.joyLikelihood @@ -521,37 +523,37 @@ GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_HeadwearLikelihood_VeryU * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_FaceAnnotation.sorrowLikelihood @@ -561,37 +563,37 @@ GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_JoyLikelihood_VeryUnlike * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_FaceAnnotation.surpriseLikelihood @@ -601,37 +603,37 @@ GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SorrowLikelihood_VeryUnl * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_FaceAnnotation.underExposedLikelihood @@ -641,37 +643,37 @@ GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_SurpriseLikelihood_VeryU * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_Feature.type @@ -681,64 +683,64 @@ GTLR_EXTERN NSString * const kGTLRVision_FaceAnnotation_UnderExposedLikelihood_V * * Value: "CROP_HINTS" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_CropHints; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_CropHints; /** * Run dense text document OCR. Takes precedence when both * `DOCUMENT_TEXT_DETECTION` and `TEXT_DETECTION` are present. * * Value: "DOCUMENT_TEXT_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_DocumentTextDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_DocumentTextDetection; /** * Run face detection. * * Value: "FACE_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_FaceDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_FaceDetection; /** * Compute a set of image properties, such as the * image's dominant colors. * * Value: "IMAGE_PROPERTIES" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_ImageProperties; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_ImageProperties; /** * Run label detection. * * Value: "LABEL_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_LabelDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_LabelDetection; /** * Run landmark detection. * * Value: "LANDMARK_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_LandmarkDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_LandmarkDetection; /** * Run logo detection. * * Value: "LOGO_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_LogoDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_LogoDetection; /** * Run localizer for object detection. * * Value: "OBJECT_LOCALIZATION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_ObjectLocalization; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_ObjectLocalization; /** * Run Product Search. * * Value: "PRODUCT_SEARCH" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_ProductSearch; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_ProductSearch; /** * Run Safe Search to detect potentially unsafe * or undesirable content. * * Value: "SAFE_SEARCH_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_SafeSearchDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_SafeSearchDetection; /** * Run text detection / optical character recognition (OCR). Text detection * is optimized for areas of text within a larger image; if the image is @@ -746,19 +748,19 @@ GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_SafeSearchDetection; * * Value: "TEXT_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_TextDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_TextDetection; /** * Unspecified feature type. * * Value: "TYPE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_TypeUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_TypeUnspecified; /** * Run web detection. * * Value: "WEB_DETECTION" */ -GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_WebDetection; +FOUNDATION_EXTERN NSString * const kGTLRVision_Feature_Type_WebDetection; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1Block.blockType @@ -768,37 +770,37 @@ GTLR_EXTERN NSString * const kGTLRVision_Feature_Type_WebDetection; * * Value: "BARCODE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Barcode; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Barcode; /** * Image block. * * Value: "PICTURE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Picture; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Picture; /** * Horizontal/vertical line box. * * Value: "RULER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Ruler; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Ruler; /** * Table block. * * Value: "TABLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Table; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Table; /** * Regular text block. * * Value: "TEXT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Text; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Text; /** * Unknown block type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockType_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation.angerLikelihood @@ -808,37 +810,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1Block_BlockTy * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation.blurredLikelihood @@ -848,37 +850,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation.headwearLikelihood @@ -888,37 +890,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation.joyLikelihood @@ -928,37 +930,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation.sorrowLikelihood @@ -968,37 +970,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation.surpriseLikelihood @@ -1008,37 +1010,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation.underExposedLikelihood @@ -1048,37 +1050,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark.type @@ -1088,211 +1090,211 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "CHIN_GNATHION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ChinGnathion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ChinGnathion; /** * Chin left gonion. * * Value: "CHIN_LEFT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ChinLeftGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ChinLeftGonion; /** * Chin right gonion. * * Value: "CHIN_RIGHT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ChinRightGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ChinRightGonion; /** * Forehead glabella. * * Value: "FOREHEAD_GLABELLA" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ForeheadGlabella; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_ForeheadGlabella; /** * Left ear tragion. * * Value: "LEFT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEarTragion; /** * Left eye. * * Value: "LEFT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEye; /** * Left eye, bottom boundary. * * Value: "LEFT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; /** * Left eyebrow, upper midpoint. * * Value: "LEFT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; /** * Left eye, left corner. * * Value: "LEFT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; /** * Left eye pupil. * * Value: "LEFT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyePupil; /** * Left eye, right corner. * * Value: "LEFT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; /** * Left eye, top boundary. * * Value: "LEFT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; /** * Left of left eyebrow. * * Value: "LEFT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; /** * Left of right eyebrow. * * Value: "LEFT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; /** * Lower lip. * * Value: "LOWER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LowerLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_LowerLip; /** * Midpoint between eyes. * * Value: "MIDPOINT_BETWEEN_EYES" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; /** * Mouth center. * * Value: "MOUTH_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MouthCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MouthCenter; /** * Mouth left. * * Value: "MOUTH_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MouthLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MouthLeft; /** * Mouth right. * * Value: "MOUTH_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MouthRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_MouthRight; /** * Nose, bottom center. * * Value: "NOSE_BOTTOM_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseBottomCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseBottomCenter; /** * Nose, bottom left. * * Value: "NOSE_BOTTOM_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseBottomLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseBottomLeft; /** * Nose, bottom right. * * Value: "NOSE_BOTTOM_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseBottomRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseBottomRight; /** * Nose tip. * * Value: "NOSE_TIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseTip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_NoseTip; /** * Right ear tragion. * * Value: "RIGHT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEarTragion; /** * Right eye. * * Value: "RIGHT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEye; /** * Right eye, bottom boundary. * * Value: "RIGHT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; /** * Right eyebrow, upper midpoint. * * Value: "RIGHT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; /** * Right eye, left corner. * * Value: "RIGHT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; /** * Right eye pupil. * * Value: "RIGHT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyePupil; /** * Right eye, right corner. * * Value: "RIGHT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; /** * Right eye, top boundary. * * Value: "RIGHT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; /** * Right of left eyebrow. * * Value: "RIGHT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; /** * Right of right eyebrow. * * Value: "RIGHT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; /** * Unknown face landmark detected. Should not be filled. * * Value: "UNKNOWN_LANDMARK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_UnknownLandmark; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_UnknownLandmark; /** * Upper lip. * * Value: "UPPER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_UpperLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotationLandmark_Type_UpperLip; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata.state @@ -1302,31 +1304,31 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1FaceAnnotatio * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Cancelled; /** * Request is received. * * Value: "CREATED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Created; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Created; /** * The batch processing is done. * * Value: "DONE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Done; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Done; /** * Request is actively being processed. * * Value: "RUNNING" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Running; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_Running; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMetadata_State_StateUnspecified; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation.adult @@ -1336,37 +1338,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1OperationMeta * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Adult_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation.medical @@ -1376,37 +1378,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Medical_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation.racy @@ -1416,37 +1418,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Racy_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation.spoof @@ -1456,37 +1458,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Spoof_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation.violence @@ -1496,37 +1498,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnnotation_Violence_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak.type @@ -1536,38 +1538,38 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1SafeSearchAnn * * Value: "EOL_SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_EolSureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_EolSureSpace; /** * End-line hyphen that is not present in text; does not co-occur with * `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`. * * Value: "HYPHEN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_Hyphen; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_Hyphen; /** * Line break that ends a paragraph. * * Value: "LINE_BREAK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_LineBreak; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_LineBreak; /** * Regular space. * * Value: "SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_Space; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_Space; /** * Sure space (very wide). * * Value: "SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_SureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_SureSpace; /** * Unknown break label type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotationDetectedBreak_Type_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1Block.blockType @@ -1577,37 +1579,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p1beta1TextAnnotatio * * Value: "BARCODE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Barcode; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Barcode; /** * Image block. * * Value: "PICTURE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Picture; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Picture; /** * Horizontal/vertical line box. * * Value: "RULER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Ruler; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Ruler; /** * Table block. * * Value: "TABLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Table; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Table; /** * Regular text block. * * Value: "TEXT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Text; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Text; /** * Unknown block type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockType_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation.angerLikelihood @@ -1617,37 +1619,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1Block_BlockTy * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation.blurredLikelihood @@ -1657,37 +1659,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation.headwearLikelihood @@ -1697,37 +1699,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation.joyLikelihood @@ -1737,37 +1739,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation.sorrowLikelihood @@ -1777,37 +1779,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation.surpriseLikelihood @@ -1817,37 +1819,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation.underExposedLikelihood @@ -1857,37 +1859,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark.type @@ -1897,211 +1899,211 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "CHIN_GNATHION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ChinGnathion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ChinGnathion; /** * Chin left gonion. * * Value: "CHIN_LEFT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ChinLeftGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ChinLeftGonion; /** * Chin right gonion. * * Value: "CHIN_RIGHT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ChinRightGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ChinRightGonion; /** * Forehead glabella. * * Value: "FOREHEAD_GLABELLA" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ForeheadGlabella; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_ForeheadGlabella; /** * Left ear tragion. * * Value: "LEFT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEarTragion; /** * Left eye. * * Value: "LEFT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEye; /** * Left eye, bottom boundary. * * Value: "LEFT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; /** * Left eyebrow, upper midpoint. * * Value: "LEFT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; /** * Left eye, left corner. * * Value: "LEFT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; /** * Left eye pupil. * * Value: "LEFT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyePupil; /** * Left eye, right corner. * * Value: "LEFT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; /** * Left eye, top boundary. * * Value: "LEFT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; /** * Left of left eyebrow. * * Value: "LEFT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; /** * Left of right eyebrow. * * Value: "LEFT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; /** * Lower lip. * * Value: "LOWER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LowerLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_LowerLip; /** * Midpoint between eyes. * * Value: "MIDPOINT_BETWEEN_EYES" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; /** * Mouth center. * * Value: "MOUTH_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MouthCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MouthCenter; /** * Mouth left. * * Value: "MOUTH_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MouthLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MouthLeft; /** * Mouth right. * * Value: "MOUTH_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MouthRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_MouthRight; /** * Nose, bottom center. * * Value: "NOSE_BOTTOM_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseBottomCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseBottomCenter; /** * Nose, bottom left. * * Value: "NOSE_BOTTOM_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseBottomLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseBottomLeft; /** * Nose, bottom right. * * Value: "NOSE_BOTTOM_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseBottomRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseBottomRight; /** * Nose tip. * * Value: "NOSE_TIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseTip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_NoseTip; /** * Right ear tragion. * * Value: "RIGHT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEarTragion; /** * Right eye. * * Value: "RIGHT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEye; /** * Right eye, bottom boundary. * * Value: "RIGHT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; /** * Right eyebrow, upper midpoint. * * Value: "RIGHT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; /** * Right eye, left corner. * * Value: "RIGHT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; /** * Right eye pupil. * * Value: "RIGHT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyePupil; /** * Right eye, right corner. * * Value: "RIGHT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; /** * Right eye, top boundary. * * Value: "RIGHT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; /** * Right of left eyebrow. * * Value: "RIGHT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; /** * Right of right eyebrow. * * Value: "RIGHT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; /** * Unknown face landmark detected. Should not be filled. * * Value: "UNKNOWN_LANDMARK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_UnknownLandmark; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_UnknownLandmark; /** * Upper lip. * * Value: "UPPER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_UpperLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotationLandmark_Type_UpperLip; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata.state @@ -2111,31 +2113,31 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1FaceAnnotatio * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Cancelled; /** * Request is received. * * Value: "CREATED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Created; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Created; /** * The batch processing is done. * * Value: "DONE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Done; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Done; /** * Request is actively being processed. * * Value: "RUNNING" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Running; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_Running; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMetadata_State_StateUnspecified; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation.adult @@ -2145,37 +2147,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1OperationMeta * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Adult_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation.medical @@ -2185,37 +2187,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Medical_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation.racy @@ -2225,37 +2227,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Racy_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation.spoof @@ -2265,37 +2267,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Spoof_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation.violence @@ -2305,37 +2307,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnnotation_Violence_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak.type @@ -2345,38 +2347,38 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1SafeSearchAnn * * Value: "EOL_SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_EolSureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_EolSureSpace; /** * End-line hyphen that is not present in text; does not co-occur with * `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`. * * Value: "HYPHEN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_Hyphen; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_Hyphen; /** * Line break that ends a paragraph. * * Value: "LINE_BREAK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_LineBreak; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_LineBreak; /** * Regular space. * * Value: "SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_Space; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_Space; /** * Sure space (very wide). * * Value: "SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_SureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_SureSpace; /** * Unknown break label type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotationDetectedBreak_Type_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata.state @@ -2388,32 +2390,32 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p2beta1TextAnnotatio * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Cancelled; /** * The request is done and no item has been successfully processed. * * Value: "FAILED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Failed; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Failed; /** * Request is actively being processed. * * Value: "PROCESSING" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Processing; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Processing; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_StateUnspecified; /** * The request is done and at least one item has been successfully * processed. * * Value: "SUCCESSFUL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Successful; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperationMetadata_State_Successful; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1Block.blockType @@ -2423,37 +2425,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1BatchOperatio * * Value: "BARCODE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Barcode; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Barcode; /** * Image block. * * Value: "PICTURE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Picture; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Picture; /** * Horizontal/vertical line box. * * Value: "RULER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Ruler; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Ruler; /** * Table block. * * Value: "TABLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Table; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Table; /** * Regular text block. * * Value: "TEXT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Text; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Text; /** * Unknown block type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockType_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation.angerLikelihood @@ -2463,37 +2465,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1Block_BlockTy * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation.blurredLikelihood @@ -2503,37 +2505,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation.headwearLikelihood @@ -2543,37 +2545,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation.joyLikelihood @@ -2583,37 +2585,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation.sorrowLikelihood @@ -2623,37 +2625,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation.surpriseLikelihood @@ -2663,37 +2665,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation.underExposedLikelihood @@ -2703,37 +2705,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark.type @@ -2743,211 +2745,211 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "CHIN_GNATHION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ChinGnathion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ChinGnathion; /** * Chin left gonion. * * Value: "CHIN_LEFT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ChinLeftGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ChinLeftGonion; /** * Chin right gonion. * * Value: "CHIN_RIGHT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ChinRightGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ChinRightGonion; /** * Forehead glabella. * * Value: "FOREHEAD_GLABELLA" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ForeheadGlabella; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_ForeheadGlabella; /** * Left ear tragion. * * Value: "LEFT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEarTragion; /** * Left eye. * * Value: "LEFT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEye; /** * Left eye, bottom boundary. * * Value: "LEFT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; /** * Left eyebrow, upper midpoint. * * Value: "LEFT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; /** * Left eye, left corner. * * Value: "LEFT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; /** * Left eye pupil. * * Value: "LEFT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyePupil; /** * Left eye, right corner. * * Value: "LEFT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; /** * Left eye, top boundary. * * Value: "LEFT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; /** * Left of left eyebrow. * * Value: "LEFT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; /** * Left of right eyebrow. * * Value: "LEFT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; /** * Lower lip. * * Value: "LOWER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LowerLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_LowerLip; /** * Midpoint between eyes. * * Value: "MIDPOINT_BETWEEN_EYES" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; /** * Mouth center. * * Value: "MOUTH_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MouthCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MouthCenter; /** * Mouth left. * * Value: "MOUTH_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MouthLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MouthLeft; /** * Mouth right. * * Value: "MOUTH_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MouthRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_MouthRight; /** * Nose, bottom center. * * Value: "NOSE_BOTTOM_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseBottomCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseBottomCenter; /** * Nose, bottom left. * * Value: "NOSE_BOTTOM_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseBottomLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseBottomLeft; /** * Nose, bottom right. * * Value: "NOSE_BOTTOM_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseBottomRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseBottomRight; /** * Nose tip. * * Value: "NOSE_TIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseTip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_NoseTip; /** * Right ear tragion. * * Value: "RIGHT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEarTragion; /** * Right eye. * * Value: "RIGHT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEye; /** * Right eye, bottom boundary. * * Value: "RIGHT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; /** * Right eyebrow, upper midpoint. * * Value: "RIGHT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; /** * Right eye, left corner. * * Value: "RIGHT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; /** * Right eye pupil. * * Value: "RIGHT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyePupil; /** * Right eye, right corner. * * Value: "RIGHT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; /** * Right eye, top boundary. * * Value: "RIGHT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; /** * Right of left eyebrow. * * Value: "RIGHT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; /** * Right of right eyebrow. * * Value: "RIGHT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; /** * Unknown face landmark detected. Should not be filled. * * Value: "UNKNOWN_LANDMARK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_UnknownLandmark; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_UnknownLandmark; /** * Upper lip. * * Value: "UPPER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_UpperLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotationLandmark_Type_UpperLip; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata.state @@ -2957,31 +2959,31 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1FaceAnnotatio * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Cancelled; /** * Request is received. * * Value: "CREATED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Created; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Created; /** * The batch processing is done. * * Value: "DONE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Done; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Done; /** * Request is actively being processed. * * Value: "RUNNING" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Running; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_Running; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMetadata_State_StateUnspecified; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation.adult @@ -2991,37 +2993,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1OperationMeta * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Adult_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation.medical @@ -3031,37 +3033,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Medical_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation.racy @@ -3071,37 +3073,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Racy_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation.spoof @@ -3111,37 +3113,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Spoof_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation.violence @@ -3151,37 +3153,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnnotation_Violence_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak.type @@ -3191,38 +3193,38 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1SafeSearchAnn * * Value: "EOL_SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_EolSureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_EolSureSpace; /** * End-line hyphen that is not present in text; does not co-occur with * `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`. * * Value: "HYPHEN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_Hyphen; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_Hyphen; /** * Line break that ends a paragraph. * * Value: "LINE_BREAK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_LineBreak; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_LineBreak; /** * Regular space. * * Value: "SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_Space; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_Space; /** * Sure space (very wide). * * Value: "SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_SureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_SureSpace; /** * Unknown break label type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotationDetectedBreak_Type_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata.state @@ -3234,32 +3236,32 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p3beta1TextAnnotatio * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Cancelled; /** * The request is done and no item has been successfully processed. * * Value: "FAILED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Failed; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Failed; /** * Request is actively being processed. * * Value: "PROCESSING" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Processing; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Processing; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_StateUnspecified; /** * The request is done and at least one item has been successfully * processed. * * Value: "SUCCESSFUL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Successful; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperationMetadata_State_Successful; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1Block.blockType @@ -3269,37 +3271,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1BatchOperatio * * Value: "BARCODE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Barcode; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Barcode; /** * Image block. * * Value: "PICTURE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Picture; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Picture; /** * Horizontal/vertical line box. * * Value: "RULER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Ruler; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Ruler; /** * Table block. * * Value: "TABLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Table; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Table; /** * Regular text block. * * Value: "TEXT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Text; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Text; /** * Unknown block type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockType_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation.angerLikelihood @@ -3309,37 +3311,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1Block_BlockTy * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_AngerLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation.blurredLikelihood @@ -3349,37 +3351,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_BlurredLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation.headwearLikelihood @@ -3389,37 +3391,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_HeadwearLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation.joyLikelihood @@ -3429,37 +3431,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_JoyLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation.sorrowLikelihood @@ -3469,37 +3471,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SorrowLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation.surpriseLikelihood @@ -3509,37 +3511,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_SurpriseLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation.underExposedLikelihood @@ -3549,37 +3551,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotation_UnderExposedLikelihood_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark.type @@ -3589,211 +3591,211 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "CHIN_GNATHION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ChinGnathion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ChinGnathion; /** * Chin left gonion. * * Value: "CHIN_LEFT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ChinLeftGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ChinLeftGonion; /** * Chin right gonion. * * Value: "CHIN_RIGHT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ChinRightGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ChinRightGonion; /** * Forehead glabella. * * Value: "FOREHEAD_GLABELLA" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ForeheadGlabella; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_ForeheadGlabella; /** * Left ear tragion. * * Value: "LEFT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEarTragion; /** * Left eye. * * Value: "LEFT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEye; /** * Left eye, bottom boundary. * * Value: "LEFT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeBottomBoundary; /** * Left eyebrow, upper midpoint. * * Value: "LEFT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyebrowUpperMidpoint; /** * Left eye, left corner. * * Value: "LEFT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeLeftCorner; /** * Left eye pupil. * * Value: "LEFT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyePupil; /** * Left eye, right corner. * * Value: "LEFT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeRightCorner; /** * Left eye, top boundary. * * Value: "LEFT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftEyeTopBoundary; /** * Left of left eyebrow. * * Value: "LEFT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftOfLeftEyebrow; /** * Left of right eyebrow. * * Value: "LEFT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LeftOfRightEyebrow; /** * Lower lip. * * Value: "LOWER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LowerLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_LowerLip; /** * Midpoint between eyes. * * Value: "MIDPOINT_BETWEEN_EYES" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MidpointBetweenEyes; /** * Mouth center. * * Value: "MOUTH_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MouthCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MouthCenter; /** * Mouth left. * * Value: "MOUTH_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MouthLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MouthLeft; /** * Mouth right. * * Value: "MOUTH_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MouthRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_MouthRight; /** * Nose, bottom center. * * Value: "NOSE_BOTTOM_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseBottomCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseBottomCenter; /** * Nose, bottom left. * * Value: "NOSE_BOTTOM_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseBottomLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseBottomLeft; /** * Nose, bottom right. * * Value: "NOSE_BOTTOM_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseBottomRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseBottomRight; /** * Nose tip. * * Value: "NOSE_TIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseTip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_NoseTip; /** * Right ear tragion. * * Value: "RIGHT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEarTragion; /** * Right eye. * * Value: "RIGHT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEye; /** * Right eye, bottom boundary. * * Value: "RIGHT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeBottomBoundary; /** * Right eyebrow, upper midpoint. * * Value: "RIGHT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyebrowUpperMidpoint; /** * Right eye, left corner. * * Value: "RIGHT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeLeftCorner; /** * Right eye pupil. * * Value: "RIGHT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyePupil; /** * Right eye, right corner. * * Value: "RIGHT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeRightCorner; /** * Right eye, top boundary. * * Value: "RIGHT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightEyeTopBoundary; /** * Right of left eyebrow. * * Value: "RIGHT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightOfLeftEyebrow; /** * Right of right eyebrow. * * Value: "RIGHT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_RightOfRightEyebrow; /** * Unknown face landmark detected. Should not be filled. * * Value: "UNKNOWN_LANDMARK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_UnknownLandmark; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_UnknownLandmark; /** * Upper lip. * * Value: "UPPER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_UpperLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotationLandmark_Type_UpperLip; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata.state @@ -3803,31 +3805,31 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1FaceAnnotatio * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Cancelled; /** * Request is received. * * Value: "CREATED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Created; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Created; /** * The batch processing is done. * * Value: "DONE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Done; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Done; /** * Request is actively being processed. * * Value: "RUNNING" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Running; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_Running; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMetadata_State_StateUnspecified; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation.adult @@ -3837,37 +3839,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1OperationMeta * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Adult_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation.medical @@ -3877,37 +3879,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Medical_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation.racy @@ -3917,37 +3919,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Racy_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation.spoof @@ -3957,37 +3959,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Spoof_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation.violence @@ -3997,37 +3999,37 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnn * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnnotation_Violence_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak.type @@ -4037,38 +4039,38 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1SafeSearchAnn * * Value: "EOL_SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_EolSureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_EolSureSpace; /** * End-line hyphen that is not present in text; does not co-occur with * `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`. * * Value: "HYPHEN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_Hyphen; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_Hyphen; /** * Line break that ends a paragraph. * * Value: "LINE_BREAK" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_LineBreak; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_LineBreak; /** * Regular space. * * Value: "SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_Space; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_Space; /** * Sure space (very wide). * * Value: "SURE_SPACE" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_SureSpace; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_SureSpace; /** * Unknown break label type. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotationDetectedBreak_Type_Unknown; // ---------------------------------------------------------------------------- // GTLRVision_Landmark.type @@ -4078,211 +4080,211 @@ GTLR_EXTERN NSString * const kGTLRVision_GoogleCloudVisionV1p4beta1TextAnnotatio * * Value: "CHIN_GNATHION" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_ChinGnathion; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_ChinGnathion; /** * Chin left gonion. * * Value: "CHIN_LEFT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_ChinLeftGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_ChinLeftGonion; /** * Chin right gonion. * * Value: "CHIN_RIGHT_GONION" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_ChinRightGonion; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_ChinRightGonion; /** * Forehead glabella. * * Value: "FOREHEAD_GLABELLA" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_ForeheadGlabella; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_ForeheadGlabella; /** * Left ear tragion. * * Value: "LEFT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEarTragion; /** * Left eye. * * Value: "LEFT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEye; /** * Left eye, bottom boundary. * * Value: "LEFT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeBottomBoundary; /** * Left eyebrow, upper midpoint. * * Value: "LEFT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyebrowUpperMidpoint; /** * Left eye, left corner. * * Value: "LEFT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeLeftCorner; /** * Left eye pupil. * * Value: "LEFT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyePupil; /** * Left eye, right corner. * * Value: "LEFT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeRightCorner; /** * Left eye, top boundary. * * Value: "LEFT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftEyeTopBoundary; /** * Left of left eyebrow. * * Value: "LEFT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftOfLeftEyebrow; /** * Left of right eyebrow. * * Value: "LEFT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LeftOfRightEyebrow; /** * Lower lip. * * Value: "LOWER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_LowerLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_LowerLip; /** * Midpoint between eyes. * * Value: "MIDPOINT_BETWEEN_EYES" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_MidpointBetweenEyes; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_MidpointBetweenEyes; /** * Mouth center. * * Value: "MOUTH_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_MouthCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_MouthCenter; /** * Mouth left. * * Value: "MOUTH_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_MouthLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_MouthLeft; /** * Mouth right. * * Value: "MOUTH_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_MouthRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_MouthRight; /** * Nose, bottom center. * * Value: "NOSE_BOTTOM_CENTER" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseBottomCenter; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseBottomCenter; /** * Nose, bottom left. * * Value: "NOSE_BOTTOM_LEFT" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseBottomLeft; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseBottomLeft; /** * Nose, bottom right. * * Value: "NOSE_BOTTOM_RIGHT" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseBottomRight; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseBottomRight; /** * Nose tip. * * Value: "NOSE_TIP" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseTip; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_NoseTip; /** * Right ear tragion. * * Value: "RIGHT_EAR_TRAGION" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEarTragion; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEarTragion; /** * Right eye. * * Value: "RIGHT_EYE" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEye; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEye; /** * Right eye, bottom boundary. * * Value: "RIGHT_EYE_BOTTOM_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeBottomBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeBottomBoundary; /** * Right eyebrow, upper midpoint. * * Value: "RIGHT_EYEBROW_UPPER_MIDPOINT" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyebrowUpperMidpoint; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyebrowUpperMidpoint; /** * Right eye, left corner. * * Value: "RIGHT_EYE_LEFT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeLeftCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeLeftCorner; /** * Right eye pupil. * * Value: "RIGHT_EYE_PUPIL" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyePupil; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyePupil; /** * Right eye, right corner. * * Value: "RIGHT_EYE_RIGHT_CORNER" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeRightCorner; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeRightCorner; /** * Right eye, top boundary. * * Value: "RIGHT_EYE_TOP_BOUNDARY" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeTopBoundary; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightEyeTopBoundary; /** * Right of left eyebrow. * * Value: "RIGHT_OF_LEFT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightOfLeftEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightOfLeftEyebrow; /** * Right of right eyebrow. * * Value: "RIGHT_OF_RIGHT_EYEBROW" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_RightOfRightEyebrow; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_RightOfRightEyebrow; /** * Unknown face landmark detected. Should not be filled. * * Value: "UNKNOWN_LANDMARK" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_UnknownLandmark; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_UnknownLandmark; /** * Upper lip. * * Value: "UPPER_LIP" */ -GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_UpperLip; +FOUNDATION_EXTERN NSString * const kGTLRVision_Landmark_Type_UpperLip; // ---------------------------------------------------------------------------- // GTLRVision_OperationMetadata.state @@ -4292,31 +4294,31 @@ GTLR_EXTERN NSString * const kGTLRVision_Landmark_Type_UpperLip; * * Value: "CANCELLED" */ -GTLR_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Cancelled; +FOUNDATION_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Cancelled; /** * Request is received. * * Value: "CREATED" */ -GTLR_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Created; +FOUNDATION_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Created; /** * The batch processing is done. * * Value: "DONE" */ -GTLR_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Done; +FOUNDATION_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Done; /** * Request is actively being processed. * * Value: "RUNNING" */ -GTLR_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Running; +FOUNDATION_EXTERN NSString * const kGTLRVision_OperationMetadata_State_Running; /** * Invalid. * * Value: "STATE_UNSPECIFIED" */ -GTLR_EXTERN NSString * const kGTLRVision_OperationMetadata_State_StateUnspecified; +FOUNDATION_EXTERN NSString * const kGTLRVision_OperationMetadata_State_StateUnspecified; // ---------------------------------------------------------------------------- // GTLRVision_SafeSearchAnnotation.adult @@ -4326,37 +4328,37 @@ GTLR_EXTERN NSString * const kGTLRVision_OperationMetadata_State_StateUnspecifie * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_SafeSearchAnnotation.medical @@ -4366,37 +4368,37 @@ GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Adult_VeryUnlikely * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_SafeSearchAnnotation.racy @@ -4406,37 +4408,37 @@ GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Medical_VeryUnlike * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_SafeSearchAnnotation.spoof @@ -4446,37 +4448,37 @@ GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Racy_VeryUnlikely; * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_VeryUnlikely; // ---------------------------------------------------------------------------- // GTLRVision_SafeSearchAnnotation.violence @@ -4486,37 +4488,37 @@ GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Spoof_VeryUnlikely * * Value: "LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Likely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Likely; /** * It is possible. * * Value: "POSSIBLE" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Possible; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Possible; /** * Unknown likelihood. * * Value: "UNKNOWN" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Unknown; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Unknown; /** * It is unlikely. * * Value: "UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Unlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_Unlikely; /** * It is very likely. * * Value: "VERY_LIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_VeryLikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_VeryLikely; /** * It is very unlikely. * * Value: "VERY_UNLIKELY" */ -GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_VeryUnlikely; +FOUNDATION_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_VeryUnlikely; /** * Request message for the `AddProductToProductSet` method. @@ -12493,7 +12495,7 @@ GTLR_EXTERN NSString * const kGTLRVision_SafeSearchAnnotation_Violence_VeryUnlik * setting a hint will help get better results (although it will be a * significant hindrance if the hint is wrong). Text detection returns an * error if one or more of the specified languages is not one of the - * [supported languages](/vision/docs/languages). + * [supported languages](https://cloud.google.com/vision/docs/languages). */ @property(nonatomic, strong, nullable) NSArray *languageHints; diff --git a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.h b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.h index a2ca64f..3f01c37 100644 --- a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.h +++ b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.h @@ -10,7 +10,9 @@ // Documentation: // https://cloud.google.com/vision/ -#if GTLR_BUILT_AS_FRAMEWORK +#if SWIFT_PACKAGE || GTLR_USE_MODULAR_IMPORT + @import GoogleAPIClientForRESTCore; +#elif GTLR_BUILT_AS_FRAMEWORK #import "GTLR/GTLRQuery.h" #else #import "GTLRQuery.h" diff --git a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.m b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.m index f194f99..04b57ad 100644 --- a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.m +++ b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionQuery.m @@ -24,7 +24,9 @@ @implementation GTLRVisionQuery_FilesAnnotate + (instancetype)queryWithObject:(GTLRVision_BatchAnnotateFilesRequest *)object { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSString *pathURITemplate = @"v1/files:annotate"; @@ -44,7 +46,9 @@ @implementation GTLRVisionQuery_FilesAsyncBatchAnnotate + (instancetype)queryWithObject:(GTLRVision_AsyncBatchAnnotateFilesRequest *)object { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSString *pathURITemplate = @"v1/files:asyncBatchAnnotate"; @@ -64,7 +68,9 @@ @implementation GTLRVisionQuery_ImagesAnnotate + (instancetype)queryWithObject:(GTLRVision_BatchAnnotateImagesRequest *)object { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSString *pathURITemplate = @"v1/images:annotate"; @@ -84,7 +90,9 @@ @implementation GTLRVisionQuery_ImagesAsyncBatchAnnotate + (instancetype)queryWithObject:(GTLRVision_AsyncBatchAnnotateImagesRequest *)object { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSString *pathURITemplate = @"v1/images:asyncBatchAnnotate"; @@ -126,7 +134,9 @@ @implementation GTLRVisionQuery_OperationsCancel + (instancetype)queryWithObject:(GTLRVision_CancelOperationRequest *)object name:(NSString *)name { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"name" ]; @@ -208,7 +218,9 @@ @implementation GTLRVisionQuery_ProjectsFilesAnnotate + (instancetype)queryWithObject:(GTLRVision_BatchAnnotateFilesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -233,7 +245,9 @@ @implementation GTLRVisionQuery_ProjectsFilesAsyncBatchAnnotate + (instancetype)queryWithObject:(GTLRVision_AsyncBatchAnnotateFilesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -258,7 +272,9 @@ @implementation GTLRVisionQuery_ProjectsImagesAnnotate + (instancetype)queryWithObject:(GTLRVision_BatchAnnotateImagesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -283,7 +299,9 @@ @implementation GTLRVisionQuery_ProjectsImagesAsyncBatchAnnotate + (instancetype)queryWithObject:(GTLRVision_AsyncBatchAnnotateImagesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -308,7 +326,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsFilesAnnotate + (instancetype)queryWithObject:(GTLRVision_BatchAnnotateFilesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -333,7 +353,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsFilesAsyncBatchAnnotate + (instancetype)queryWithObject:(GTLRVision_AsyncBatchAnnotateFilesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -358,7 +380,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsImagesAnnotate + (instancetype)queryWithObject:(GTLRVision_BatchAnnotateImagesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -383,7 +407,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsImagesAsyncBatchAnnotate + (instancetype)queryWithObject:(GTLRVision_AsyncBatchAnnotateImagesRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -427,7 +453,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductsCreate + (instancetype)queryWithObject:(GTLRVision_Product *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -471,7 +499,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductSetsAddProduct + (instancetype)queryWithObject:(GTLRVision_AddProductToProductSetRequest *)object name:(NSString *)name { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"name" ]; @@ -496,7 +526,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductSetsCreate + (instancetype)queryWithObject:(GTLRVision_ProductSet *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -559,7 +591,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductSetsImport + (instancetype)queryWithObject:(GTLRVision_ImportProductSetsRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -603,7 +637,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductSetsPatch + (instancetype)queryWithObject:(GTLRVision_ProductSet *)object name:(NSString *)name { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"name" ]; @@ -647,7 +683,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductSetsRemoveProduct + (instancetype)queryWithObject:(GTLRVision_RemoveProductFromProductSetRequest *)object name:(NSString *)name { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"name" ]; @@ -710,7 +748,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductsPatch + (instancetype)queryWithObject:(GTLRVision_Product *)object name:(NSString *)name { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"name" ]; @@ -735,7 +775,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductsPurge + (instancetype)queryWithObject:(GTLRVision_PurgeProductsRequest *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; @@ -760,7 +802,9 @@ @implementation GTLRVisionQuery_ProjectsLocationsProductsReferenceImagesCreate + (instancetype)queryWithObject:(GTLRVision_ReferenceImage *)object parent:(NSString *)parent { if (object == nil) { - GTLR_DEBUG_ASSERT(object != nil, @"Got a nil object"); +#if defined(DEBUG) && DEBUG + NSAssert(object != nil, @"Got a nil object"); +#endif return nil; } NSArray *pathParams = @[ @"parent" ]; diff --git a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionService.h b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionService.h index c1646f5..a06d4bd 100644 --- a/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionService.h +++ b/Pods/GoogleAPIClientForREST/Source/GeneratedServices/Vision/GTLRVisionService.h @@ -10,7 +10,9 @@ // Documentation: // https://cloud.google.com/vision/ -#if GTLR_BUILT_AS_FRAMEWORK +#if SWIFT_PACKAGE || GTLR_USE_MODULAR_IMPORT + @import GoogleAPIClientForRESTCore; +#elif GTLR_BUILT_AS_FRAMEWORK #import "GTLR/GTLRService.h" #else #import "GTLRService.h" @@ -36,14 +38,14 @@ NS_ASSUME_NONNULL_BEGIN * * Value "https://www.googleapis.com/auth/cloud-platform" */ -GTLR_EXTERN NSString * const kGTLRAuthScopeVisionCloudPlatform; +FOUNDATION_EXTERN NSString * const kGTLRAuthScopeVisionCloudPlatform; /** * Authorization scope: Apply machine learning models to understand and label * images * * Value "https://www.googleapis.com/auth/cloud-vision" */ -GTLR_EXTERN NSString * const kGTLRAuthScopeVisionCloudVision; +FOUNDATION_EXTERN NSString * const kGTLRAuthScopeVisionCloudVision; // ---------------------------------------------------------------------------- // GTLRVisionService diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRBatchQuery.m b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRBatchQuery.m index bde6320..606dd76 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRBatchQuery.m +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRBatchQuery.m @@ -19,6 +19,7 @@ #import "GTLRBatchQuery.h" +#import "GTLRDefines.h" #import "GTLRService.h" #if DEBUG diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDateTime.h b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDateTime.h index c66de63..b70e0f1 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDateTime.h +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDateTime.h @@ -14,7 +14,6 @@ */ #import -#import "GTLRDefines.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.h b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.h index 58eba34..c1ac69c 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.h +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.h @@ -14,7 +14,6 @@ */ #import -#import "GTLRDefines.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.m b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.m index ed5a5e6..b33f1db 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.m +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRDuration.m @@ -19,6 +19,8 @@ #import "GTLRDuration.h" +#import "GTLRDefines.h" + static const int32_t kNanosPerMillisecond = 1000000; static const int32_t kNanosPerMicrosecond = 1000; static const int32_t kNanosPerSecond = 1000000000; diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.h b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.h index 8f54dff..87953d3 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.h +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.h @@ -18,7 +18,6 @@ #import -#import "GTLRDefines.h" #import "GTLRDateTime.h" #import "GTLRDuration.h" @@ -305,6 +304,8 @@ NS_ASSUME_NONNULL_BEGIN - (nullable NSArray *)itemsWithItemClass:(Class)itemClass; @end +// ---------------------------------------------------------------------------- + /** * Helper to call the resolver and find the class to use for the given JSON. * Intended for internal library use only. @@ -314,4 +315,13 @@ Class GTLRObjectResolveClass( NSDictionary *json, Class defaultClass); +// ---------------------------------------------------------------------------- + +// Version marker used to validate the generated sources against the library +// version. The will be changed any time the library makes a change that means +// sources need to be regenerated. +#define GTLR_RUNTIME_VERSION 3000 + +// ---------------------------------------------------------------------------- + NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.m b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.m index aaa53fe..b8e3928 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.m +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRObject.m @@ -19,6 +19,7 @@ #include +#import "GTLRDefines.h" #import "GTLRObject.h" #import "GTLRRuntimeCommon.h" #import "GTLRUtilities.h" diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRQuery.m b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRQuery.m index 45e16e4..c4baee3 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRQuery.m +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRQuery.m @@ -20,6 +20,8 @@ #include #import "GTLRQuery.h" + +#import "GTLRDefines.h" #import "GTLRRuntimeCommon.h" #import "GTLRService.h" #import "GTLRUtilities.h" diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.h b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.h index d68f4bb..51e4d59 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.h +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.h @@ -15,8 +15,6 @@ #import -#import "GTLRDefines.h" - @protocol GTLRObjectClassResolver; NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.m b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.m index cef93f9..716ca46 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.m +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRRuntimeCommon.m @@ -22,6 +22,7 @@ #import "GTLRRuntimeCommon.h" +#import "GTLRDefines.h" #import "GTLRDateTime.h" #import "GTLRDuration.h" #import "GTLRObject.h" diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.h b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.h index 721dfd9..7689ebe 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.h +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.h @@ -18,7 +18,6 @@ #import -#import "GTLRDefines.h" #import "GTLRBatchQuery.h" #import "GTLRBatchResult.h" #import "GTLRDateTime.h" @@ -36,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN /** * The domain used used for NSErrors created by GTLRService query execution. */ -extern NSString *const kGTLRServiceErrorDomain; +FOUNDATION_EXTERN NSString *const kGTLRServiceErrorDomain; typedef NS_ENUM(NSInteger, GTLRServiceError) { GTLRServiceErrorQueryResultMissing = -3000, @@ -47,24 +46,24 @@ typedef NS_ENUM(NSInteger, GTLRServiceError) { /** * The kGTLRServiceErrorDomain userInfo key for the server response body. */ -extern NSString *const kGTLRServiceErrorBodyDataKey; +FOUNDATION_EXTERN NSString *const kGTLRServiceErrorBodyDataKey; /** * The kGTLRServiceErrorDomain userInfo key for the response content ID, if appropriate. */ -extern NSString *const kGTLRServiceErrorContentIDKey; +FOUNDATION_EXTERN NSString *const kGTLRServiceErrorContentIDKey; /** * The domain used for foundation errors created from GTLRErrorObjects that * were not originally foundation errors. */ -extern NSString *const kGTLRErrorObjectDomain; +FOUNDATION_EXTERN NSString *const kGTLRErrorObjectDomain; /** * The userInfo key for a GTLRErrorObject for errors with domain kGTLRErrorObjectDomain * when the error was created from a structured JSON error response body. */ -extern NSString *const kGTLRStructuredErrorKey; +FOUNDATION_EXTERN NSString *const kGTLRStructuredErrorKey; /** * A constant ETag for when updating or deleting a single entry, telling @@ -72,7 +71,7 @@ extern NSString *const kGTLRStructuredErrorKey; * * Do not use this in entries in a batch feed. */ -extern NSString *const kGTLRETagWildcard; +FOUNDATION_EXTERN NSString *const kGTLRETagWildcard; /** * Notification of a ticket starting. The notification object is the ticket. @@ -80,32 +79,32 @@ extern NSString *const kGTLRETagWildcard; * * Use the stopped notification to log all requests made by the library. */ -extern NSString *const kGTLRServiceTicketStartedNotification; +FOUNDATION_EXTERN NSString *const kGTLRServiceTicketStartedNotification; /** * Notification of a ticket stopping. The notification object is the ticket. * This is posted on the main thread. */ -extern NSString *const kGTLRServiceTicketStoppedNotification; +FOUNDATION_EXTERN NSString *const kGTLRServiceTicketStoppedNotification; /** * Notifications when parsing of a server response or entry begins. * This is posted on the main thread. */ -extern NSString *const kGTLRServiceTicketParsingStartedNotification; +FOUNDATION_EXTERN NSString *const kGTLRServiceTicketParsingStartedNotification; /** * Notifications when parsing of a server response or entry ends. * This is posted on the main thread. */ -extern NSString *const kGTLRServiceTicketParsingStoppedNotification; +FOUNDATION_EXTERN NSString *const kGTLRServiceTicketParsingStoppedNotification; /** * The header name used to send an Application's Bundle Identifier. * For more information on adding API restrictions see the docs: * https://cloud.google.com/docs/authentication/api-keys#api_key_restrictions */ -extern NSString *const kXIosBundleIdHeader; +FOUNDATION_EXTERN NSString *const kXIosBundleIdHeader; @class GTLRServiceTicket; diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.m b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.m index ebd347d..a556bb7 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.m +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRService.m @@ -31,13 +31,25 @@ #endif #endif +#if !defined(GTLR_USE_MODULE_IMPORTS) + #if defined(SWIFT_PACKAGE) && SWIFT_PACKAGE + #define GTLR_USE_MODULE_IMPORTS 1 + #else + #define GTLR_USE_MODULE_IMPORTS 0 + #endif +#endif + #import "GTLRService.h" +#import "GTLRDefines.h" #import "GTLRFramework.h" #import "GTLRURITemplate.h" #import "GTLRUtilities.h" -#if GTLR_USE_FRAMEWORK_IMPORTS +#if GTLR_USE_MODULE_IMPORTS + @import GTMSessionFetcherCore; + @import GTMSessionFetcherFull; +#elif GTLR_USE_FRAMEWORK_IMPORTS #import #import #import @@ -52,6 +64,18 @@ #error GTMSessionFetcher headers should have defaulted this if it wasn't already defined. #endif +#ifndef GTLR_ASSERT_CURRENT_QUEUE_DEBUG + #define GTLR_ASSERT_CURRENT_QUEUE_DEBUG(targetQueue) \ + GTLR_DEBUG_ASSERT(0 == strcmp(GTLR_QUEUE_NAME(targetQueue), \ + GTLR_QUEUE_NAME(DISPATCH_CURRENT_QUEUE_LABEL)), \ + @"Current queue is %s (expected %s)", \ + GTLR_QUEUE_NAME(DISPATCH_CURRENT_QUEUE_LABEL), \ + GTLR_QUEUE_NAME(targetQueue)) + + #define GTLR_QUEUE_NAME(queue) \ + (strlen(dispatch_queue_get_label(queue)) > 0 ? dispatch_queue_get_label(queue) : "unnamed") +#endif // GTLR_ASSERT_CURRENT_QUEUE_DEBUG + NSString *const kGTLRServiceErrorDomain = @"com.google.GTLRServiceDomain"; NSString *const kGTLRErrorObjectDomain = @"com.google.GTLRErrorObjectDomain"; NSString *const kGTLRServiceErrorBodyDataKey = @"body"; @@ -178,6 +202,7 @@ - (void)postNotificationOnMainThreadWithName:(NSString *)name // // We locally declare some methods of the upload fetcher so we // do not need to import the header, as some projects may not have it available +#if !SWIFT_PACKAGE @interface GTMSessionUploadFetcher : GTMSessionFetcher + (instancetype)uploadFetcherWithRequest:(NSURLRequest *)request @@ -199,6 +224,7 @@ - (void)pauseFetching; - (void)resumeFetching; - (BOOL)isPaused; @end +#endif // !SWIFT_PACKAGE #endif // GTLR_HAS_SESSION_UPLOAD_FETCHER_IMPORT @@ -1540,57 +1566,64 @@ - (GTLRBatchResponsePart *)responsePartWithMIMEPart:(GTMMIMEDocumentPart *)mimeP targetBytes:"\r\n" targetLength:2 foundOffsets:&offsets]; - if (offsets.count < 2) { - // Lack of status line and inner headers is strange, but not fatal since - // if the JSON was delivered. - GTLR_DEBUG_LOG(@"GTLRService: Batch result cannot parse headers for request %@:\n%@", - responseContentID, - [[NSString alloc] initWithData:innerHeaderData - encoding:NSUTF8StringEncoding]); - } else { - NSString *statusString; - NSInteger statusCode; - [self getResponseLineFromData:innerHeaderData - statusCode:&statusCode - statusString:&statusString]; - responsePart.statusCode = statusCode; - responsePart.statusString = statusString; + NSData *statusLine; + NSData *actualInnerHeaderData; + if (offsets.count) { + NSRange statusRange = NSMakeRange(0, offsets[0].unsignedIntegerValue); + statusLine = [innerHeaderData subdataWithRange:statusRange]; NSUInteger actualInnerHeaderOffset = offsets[0].unsignedIntegerValue + 2; - NSData *actualInnerHeaderData; if (innerHeaderData.length - actualInnerHeaderOffset > 0) { NSRange actualInnerHeaderRange = NSMakeRange(actualInnerHeaderOffset, innerHeaderData.length - actualInnerHeaderOffset); actualInnerHeaderData = [innerHeaderData subdataWithRange:actualInnerHeaderRange]; } - responsePart.headers = [GTMMIMEDocument headersWithData:actualInnerHeaderData]; + } else { + // There appears to only be a status line. + // + // This means there were no reponse headers. "Date" seems like it should + // be required, but https://tools.ietf.org/html/rfc7231#section-7.1.1.2 + // lets even that be left off if a server doesn't have a clock it knows + // to be correct. + statusLine = innerHeaderData; } + NSString *statusString; + NSInteger statusCode; + [self getResponseLineFromData:statusLine + statusCode:&statusCode + statusString:&statusString]; + responsePart.statusCode = statusCode; + responsePart.statusString = statusString; + responsePart.headers = [GTMMIMEDocument headersWithData:actualInnerHeaderData]; + // Create JSON from the body. - NSError *parseError = nil; + // (if there is any, methods like delete return nothing) NSMutableDictionary *json; if (partBodyData) { + NSError *parseError = nil; json = [NSJSONSerialization JSONObjectWithData:partBodyData options:NSJSONReadingMutableContainers error:&parseError]; - } else { - parseError = [NSError errorWithDomain:kGTLRServiceErrorDomain - code:GTLRServiceErrorBatchResponseUnexpected - userInfo:nil]; + if (!json) { + if (!parseError) { + // There should be an error, but just incase... + parseError = [NSError errorWithDomain:kGTLRServiceErrorDomain + code:GTLRServiceErrorBatchResponseUnexpected + userInfo:nil]; + } + // Add our content ID and part body data to the parse error. + NSMutableDictionary *userInfo = + [NSMutableDictionary dictionaryWithDictionary:parseError.userInfo]; + [userInfo setValue:mimePartBody forKey:kGTLRServiceErrorBodyDataKey]; + [userInfo setValue:responseContentID forKey:kGTLRServiceErrorContentIDKey]; + responsePart.parseError = [NSError errorWithDomain:parseError.domain + code:parseError.code + userInfo:userInfo]; + } } responsePart.JSON = json; - - if (!json) { - // Add our content ID and part body data to the parse error. - NSMutableDictionary *userInfo = - [NSMutableDictionary dictionaryWithDictionary:parseError.userInfo]; - [userInfo setValue:mimePartBody forKey:kGTLRServiceErrorBodyDataKey]; - [userInfo setValue:responseContentID forKey:kGTLRServiceErrorContentIDKey]; - responsePart.parseError = [NSError errorWithDomain:parseError.domain - code:parseError.code - userInfo:userInfo]; - } } return responsePart; } @@ -1616,6 +1649,11 @@ - (void)getResponseLineFromData:(NSData *)data && [scanner scanInteger:outStatusCode] && [scanner scanUpToCharactersFromSet:newlineSet intoString:outStatusString]) { // Got it all. + #if DEBUG + if (![httpVersion hasPrefix:@"HTTP/"]) { + GTLR_DEBUG_LOG(@"GTLRService: Non-standard HTTP Version: %@", httpVersion); + } + #endif } } diff --git a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRUploadParameters.h b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRUploadParameters.h index fb2402b..8d048ee 100644 --- a/Pods/GoogleAPIClientForREST/Source/Objects/GTLRUploadParameters.h +++ b/Pods/GoogleAPIClientForREST/Source/Objects/GTLRUploadParameters.h @@ -18,8 +18,6 @@ #import -#import "GTLRDefines.h" - NS_ASSUME_NONNULL_BEGIN /** diff --git a/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRFramework.h b/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRFramework.h index ab94a4c..d5868a4 100644 --- a/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRFramework.h +++ b/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRFramework.h @@ -15,8 +15,6 @@ #import -#import "GTLRDefines.h" - NS_ASSUME_NONNULL_BEGIN // Returns the version of the framework. Major and minor should diff --git a/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRURITemplate.h b/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRURITemplate.h index fa200fe..f59d694 100644 --- a/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRURITemplate.h +++ b/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRURITemplate.h @@ -15,10 +15,6 @@ #import -#ifndef SKIP_GTLR_DEFINES - #import "GTLRDefines.h" -#endif - NS_ASSUME_NONNULL_BEGIN // diff --git a/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRUtilities.h b/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRUtilities.h index 5c37f13..102b26a 100644 --- a/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRUtilities.h +++ b/Pods/GoogleAPIClientForREST/Source/Utilities/GTLRUtilities.h @@ -15,10 +15,6 @@ #import -#ifndef SKIP_GTLR_DEFINES - #import "GTLRDefines.h" -#endif - NS_ASSUME_NONNULL_BEGIN // Helper functions for implementing isEqual: diff --git a/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement b/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement new file mode 100755 index 0000000..683f4f0 Binary files /dev/null and b/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement differ diff --git a/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap b/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap new file mode 100755 index 0000000..de80e9e --- /dev/null +++ b/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module GoogleAppMeasurement { + export * + module * { export * } + link "sqlite3" + link "z" + link framework "CoreData" + link framework "Security" + link framework "StoreKit" + link framework "SystemConfiguration" + link framework "UIKit" +} diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m index 6df92a5..0f5170d 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m @@ -16,6 +16,8 @@ #import "GDTCORLibrary/Public/GDTCORConsoleLogger.h" +volatile NSInteger GDTCORConsoleLoggerLoggingLevel = GDTCORLoggingLevelErrors; + /** The console logger prefix. */ static NSString *kGDTCORConsoleLogger = @"[GoogleDataTransport]"; @@ -23,11 +25,28 @@ return [[NSString alloc] initWithFormat:@"I-GDTCOR%06ld", (long)code]; } -void GDTCORLog(GDTCORMessageCode code, NSString *format, ...) { +void GDTCORLog(GDTCORMessageCode code, GDTCORLoggingLevel logLevel, NSString *format, ...) { +// Don't log anything in not debug builds. +#if !NDEBUG + if (logLevel >= GDTCORConsoleLoggerLoggingLevel) { + NSString *logFormat = [NSString stringWithFormat:@"%@[%@] %@", kGDTCORConsoleLogger, + GDTCORMessageCodeEnumToString(code), format]; + va_list args; + va_start(args, format); + NSLogv(logFormat, args); + va_end(args); + } +#endif // !NDEBUG +} + +void GDTCORLogAssert( + BOOL wasFatal, NSString *_Nonnull file, NSInteger line, NSString *_Nullable format, ...) { // Don't log anything in not debug builds. #if !NDEBUG - NSString *logFormat = [NSString stringWithFormat:@"%@[%@] %@", kGDTCORConsoleLogger, - GDTCORMessageCodeEnumToString(code), format]; + GDTCORMessageCode code = wasFatal ? GDTCORMCEFatalAssertion : GDTCORMCEGeneralError; + NSString *logFormat = + [NSString stringWithFormat:@"%@[%@] (%@:%ld) : %@", kGDTCORConsoleLogger, + GDTCORMessageCodeEnumToString(code), file, (long)line, format]; va_list args; va_start(args, format); NSLogv(logFormat, args); diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m index 33c3f15..04903d4 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import +#import "GDTCORLibrary/Private/GDTCORDataFuture.h" @implementation GDTCORDataFuture @@ -32,7 +32,7 @@ - (BOOL)isEqual:(id)object { - (NSUInteger)hash { // In reality, only one of these should be populated. - return [_fileURL hash] ^ [_originalData hash]; + return [_fileURL hash]; } #pragma mark - NSSecureCoding @@ -40,23 +40,18 @@ - (NSUInteger)hash { /** Coding key for _fileURL ivar. */ static NSString *kGDTCORDataFutureFileURLKey = @"GDTCORDataFutureFileURLKey"; -/** Coding key for _data ivar. */ -static NSString *kGDTCORDataFutureDataKey = @"GDTCORDataFutureDataKey"; - + (BOOL)supportsSecureCoding { return YES; } - (void)encodeWithCoder:(nonnull NSCoder *)aCoder { [aCoder encodeObject:_fileURL forKey:kGDTCORDataFutureFileURLKey]; - [aCoder encodeObject:_originalData forKey:kGDTCORDataFutureDataKey]; } - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { self = [self init]; if (self) { _fileURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:kGDTCORDataFutureFileURLKey]; - _originalData = [aDecoder decodeObjectOfClass:[NSData class] forKey:kGDTCORDataFutureDataKey]; } return self; } diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m index ed0c8e8..5c79a4b 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m @@ -14,16 +14,54 @@ * limitations under the License. */ -#import +#import "GDTCORLibrary/Public/GDTCOREvent.h" #import +#import #import -#import +#import +#import "GDTCORLibrary/Private/GDTCORDataFuture.h" #import "GDTCORLibrary/Private/GDTCOREvent_Private.h" @implementation GDTCOREvent ++ (NSNumber *)nextEventID { + static unsigned long long nextEventID = 0; + static NSString *counterPath; + static dispatch_queue_t eventIDQueue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + eventIDQueue = dispatch_queue_create("com.google.GDTCOREventIDQueue", DISPATCH_QUEUE_SERIAL); + counterPath = GDTCORRootDirectory().path; + counterPath = [NSString stringWithFormat:@"%@/count", counterPath]; + NSError *error; + NSString *countText = [NSString stringWithContentsOfFile:counterPath + encoding:NSUTF8StringEncoding + error:&error]; + const char *countChars = [countText UTF8String]; + unsigned long long count = 0ULL; + if (countChars) { + count = strtoull([countText UTF8String], NULL, 10); + } + nextEventID = error ? 0 : count; + }); + + __block NSNumber *result; + dispatch_sync(eventIDQueue, ^{ + result = @(nextEventID); + nextEventID++; + NSError *error; + [[result stringValue] writeToFile:counterPath + atomically:YES + encoding:NSUTF8StringEncoding + error:&error]; + GDTCORAssert(error == nil, @"There was an error saving the new counter value to disk: %@", + error); + }); + return result; +} + - (nullable instancetype)initWithMappingID:(NSString *)mappingID target:(NSInteger)target { GDTCORAssert(mappingID.length > 0, @"Please give a valid mapping ID"); GDTCORAssert(target > 0, @"A target cannot be negative or 0"); @@ -32,92 +70,189 @@ - (nullable instancetype)initWithMappingID:(NSString *)mappingID target:(NSInteg } self = [super init]; if (self) { + _eventID = [GDTCOREvent nextEventID]; _mappingID = mappingID; _target = target; _qosTier = GDTCOREventQosDefault; } - GDTCORLogDebug("Event %@ created. mappingID: %@ target:%ld qos:%ld", self, _mappingID, - (long)_target, (long)_qosTier); + GDTCORLogDebug(@"Event %@ created. mappingID: %@ target:%ld", self, mappingID, (long)target); return self; } - (instancetype)copy { GDTCOREvent *copy = [[GDTCOREvent alloc] initWithMappingID:_mappingID target:_target]; + copy->_eventID = _eventID; copy.dataObject = _dataObject; - copy.dataObjectTransportBytes = _dataObjectTransportBytes; copy.qosTier = _qosTier; copy.clockSnapshot = _clockSnapshot; - copy.customPrioritizationParams = _customPrioritizationParams; - GDTCORLogDebug("Copying event %@ to event %@", self, copy); + copy.customBytes = _customBytes; + copy->_GDTFilePath = _GDTFilePath; + GDTCORLogDebug(@"Copying event %@ to event %@", self, copy); return copy; } - (NSUInteger)hash { // This loses some precision, but it's probably fine. + NSUInteger eventIDHash = [_eventID hash]; NSUInteger mappingIDHash = [_mappingID hash]; NSUInteger timeHash = [_clockSnapshot hash]; - NSUInteger dataObjectTransportBytesHash = [_dataObjectTransportBytes hash]; - return mappingIDHash ^ _target ^ dataObjectTransportBytesHash ^ _qosTier ^ timeHash; + NSInteger dataObjectHash = [_dataObject hash]; + NSUInteger fileURL = [_GDTFilePath hash]; + + return eventIDHash ^ mappingIDHash ^ _target ^ _qosTier ^ timeHash ^ dataObjectHash ^ fileURL; } - (BOOL)isEqual:(id)object { return [self hash] == [object hash]; } +#pragma mark - Property overrides + - (void)setDataObject:(id)dataObject { // If you're looking here because of a performance issue in -transportBytes slowing the assignment // of -dataObject, one way to address this is to add a queue to this class, // dispatch_(barrier_ if concurrent)async here, and implement the getter with a dispatch_sync. if (dataObject != _dataObject) { _dataObject = dataObject; - _dataObjectTransportBytes = [dataObject transportBytes]; } } -- (GDTCORStoredEvent *)storedEventWithDataFuture:(GDTCORDataFuture *)dataFuture { - return [[GDTCORStoredEvent alloc] initWithEvent:self dataFuture:dataFuture]; +- (NSURL *)fileURL { + if (!_GDTFilePath) { + _GDTFilePath = [NSString stringWithFormat:@"event-%lu", (unsigned long)self.hash]; + } + return [GDTCORRootDirectory() URLByAppendingPathComponent:_GDTFilePath]; +} + +#pragma mark - Private methods + +- (BOOL)writeToGDTPath:(NSString *)filePath error:(NSError **)error { + NSData *dataTransportBytes = [_dataObject transportBytes]; + if (dataTransportBytes == nil) { + _GDTFilePath = nil; + _dataObject = nil; + return NO; + } + NSURL *fileURL = [GDTCORRootDirectory() URLByAppendingPathComponent:filePath]; + BOOL writingSuccess = [dataTransportBytes writeToURL:fileURL + options:NSDataWritingAtomic + error:error]; + if (!writingSuccess) { + GDTCORLogError(GDTCORMCEFileWriteError, @"An event file could not be written: %@", fileURL); + return NO; + } + _GDTFilePath = filePath; + _dataObject = nil; + return YES; } #pragma mark - NSSecureCoding and NSCoding Protocols +/** NSCoding key for eventID property. */ +static NSString *eventIDKey = @"_eventID"; + /** NSCoding key for mappingID property. */ static NSString *mappingIDKey = @"_mappingID"; /** NSCoding key for target property. */ static NSString *targetKey = @"_target"; -/** NSCoding key for dataObjectTransportBytes property. */ -static NSString *dataObjectTransportBytesKey = @"_dataObjectTransportBytesKey"; - /** NSCoding key for qosTier property. */ static NSString *qosTierKey = @"_qosTier"; /** NSCoding key for clockSnapshot property. */ static NSString *clockSnapshotKey = @"_clockSnapshot"; +/** NSCoding key for fileURL property. */ +static NSString *fileURLKey = @"_fileURL"; + +/** NSCoding key for GDTFilePath property. */ +static NSString *kGDTFilePathKey = @"_GDTFilePath"; + +/** NSCoding key for backwards compatibility of GDTCORStoredEvent mappingID property.*/ +static NSString *kStoredEventMappingIDKey = @"GDTCORStoredEventMappingIDKey"; + +/** NSCoding key for backwards compatibility of GDTCORStoredEvent target property.*/ +static NSString *kStoredEventTargetKey = @"GDTCORStoredEventTargetKey"; + +/** NSCoding key for backwards compatibility of GDTCORStoredEvent qosTier property.*/ +static NSString *kStoredEventQosTierKey = @"GDTCORStoredEventQosTierKey"; + +/** NSCoding key for backwards compatibility of GDTCORStoredEvent clockSnapshot property.*/ +static NSString *kStoredEventClockSnapshotKey = @"GDTCORStoredEventClockSnapshotKey"; + +/** NSCoding key for backwards compatibility of GDTCORStoredEvent dataFuture property.*/ +static NSString *kStoredEventDataFutureKey = @"GDTCORStoredEventDataFutureKey"; + +/** NSCoding key for customData property. */ +static NSString *kCustomDataKey = @"GDTCOREventCustomDataKey"; + + (BOOL)supportsSecureCoding { return YES; } - (id)initWithCoder:(NSCoder *)aDecoder { - NSString *mappingID = [aDecoder decodeObjectOfClass:[NSObject class] forKey:mappingIDKey]; + GDTCORDataFuture *dataFuture = [aDecoder decodeObjectOfClass:[GDTCORDataFuture class] + forKey:kStoredEventDataFutureKey]; + if (dataFuture) { + return [self initWithCoderForStoredEventBackwardCompatibility:aDecoder + fileURL:dataFuture.fileURL]; + } + NSString *mappingID = [aDecoder decodeObjectOfClass:[NSString class] forKey:mappingIDKey]; NSInteger target = [aDecoder decodeIntegerForKey:targetKey]; self = [self initWithMappingID:mappingID target:target]; if (self) { - _dataObjectTransportBytes = [aDecoder decodeObjectOfClass:[NSData class] - forKey:dataObjectTransportBytesKey]; + _eventID = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:eventIDKey]; + if (_eventID == nil) { + _eventID = [GDTCOREvent nextEventID]; + } _qosTier = [aDecoder decodeIntegerForKey:qosTierKey]; _clockSnapshot = [aDecoder decodeObjectOfClass:[GDTCORClock class] forKey:clockSnapshotKey]; + NSURL *fileURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:fileURLKey]; + if (fileURL) { + _GDTFilePath = [fileURL lastPathComponent]; + } else { + _GDTFilePath = [aDecoder decodeObjectOfClass:[NSString class] forKey:kGDTFilePathKey]; + } + _customBytes = [aDecoder decodeObjectOfClass:[NSData class] forKey:kCustomDataKey]; + } + return self; +} + +- (id)initWithCoderForStoredEventBackwardCompatibility:(NSCoder *)aDecoder + fileURL:(NSURL *)fileURL { + NSString *mappingID = [aDecoder decodeObjectOfClass:[NSString class] + forKey:kStoredEventMappingIDKey]; + NSInteger target = [[aDecoder decodeObjectOfClass:[NSNumber class] + forKey:kStoredEventTargetKey] integerValue]; + self = [self initWithMappingID:mappingID target:target]; + if (self) { + _eventID = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:eventIDKey]; + if (_eventID == nil) { + _eventID = [GDTCOREvent nextEventID]; + } + _qosTier = [[aDecoder decodeObjectOfClass:[NSNumber class] + forKey:kStoredEventQosTierKey] integerValue]; + _clockSnapshot = [aDecoder decodeObjectOfClass:[GDTCORClock class] + forKey:kStoredEventClockSnapshotKey]; + if (fileURL) { + _GDTFilePath = [fileURL lastPathComponent]; + } else { + _GDTFilePath = [aDecoder decodeObjectOfClass:[NSString class] forKey:kGDTFilePathKey]; + } + _customBytes = [aDecoder decodeObjectOfClass:[NSData class] forKey:kCustomDataKey]; } return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_eventID forKey:eventIDKey]; [aCoder encodeObject:_mappingID forKey:mappingIDKey]; [aCoder encodeInteger:_target forKey:targetKey]; - [aCoder encodeObject:_dataObjectTransportBytes forKey:dataObjectTransportBytesKey]; [aCoder encodeInteger:_qosTier forKey:qosTierKey]; [aCoder encodeObject:_clockSnapshot forKey:clockSnapshotKey]; + [aCoder encodeObject:_GDTFilePath forKey:kGDTFilePathKey]; + [aCoder encodeObject:_customBytes forKey:kCustomDataKey]; } @end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m new file mode 100644 index 0000000..d50cf0a --- /dev/null +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m @@ -0,0 +1,411 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "GDTCORLibrary/Private/GDTCORFlatFileStorage.h" + +#import +#import +#import +#import +#import + +#import "GDTCORLibrary/Private/GDTCOREvent_Private.h" +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" +#import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" + +@implementation GDTCORFlatFileStorage + ++ (void)load { + [[GDTCORRegistrar sharedInstance] registerStorage:[self sharedInstance] target:kGDTCORTargetCCT]; + [[GDTCORRegistrar sharedInstance] registerStorage:[self sharedInstance] target:kGDTCORTargetFLL]; + [[GDTCORRegistrar sharedInstance] registerStorage:[self sharedInstance] target:kGDTCORTargetCSH]; + + // Sets a global translation mapping to decode GDTCORStoredEvent objects encoded as instances of + // GDTCOREvent instead. Then we do the same thing with GDTCORStorage. This must be done in load + // because there are no direct references to this class and the NSCoding methods won't be called + // unless the class name is mapped early. + [NSKeyedUnarchiver setClass:[GDTCOREvent class] forClassName:@"GDTCORStoredEvent"]; + [NSKeyedUnarchiver setClass:[GDTCORFlatFileStorage class] forClassName:@"GDTCORStorage"]; +} + ++ (NSString *)archivePath { + static NSString *archivePath; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + archivePath = + [GDTCORRootDirectory() URLByAppendingPathComponent:@"GDTCORFlatFileStorageArchive"].path; + }); + return archivePath; +} + ++ (NSString *)libraryDataPath { + static NSString *libraryDataPath; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + libraryDataPath = + [GDTCORRootDirectory() URLByAppendingPathComponent:NSStringFromClass([self class]) + isDirectory:YES] + .path; + libraryDataPath = [libraryDataPath stringByAppendingPathComponent:@"gdt_library_data"]; + if (![[NSFileManager defaultManager] fileExistsAtPath:libraryDataPath isDirectory:NULL]) { + NSError *error; + [[NSFileManager defaultManager] createDirectoryAtPath:libraryDataPath + withIntermediateDirectories:YES + attributes:0 + error:&error]; + GDTCORAssert(error == nil, @"Creating the library data path failed: %@", error); + } + }); + return libraryDataPath; +} + ++ (instancetype)sharedInstance { + static GDTCORFlatFileStorage *sharedStorage; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedStorage = [[GDTCORFlatFileStorage alloc] init]; + }); + return sharedStorage; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _storageQueue = + dispatch_queue_create("com.google.GDTCORFlatFileStorage", DISPATCH_QUEUE_SERIAL); + _targetToEventSet = [[NSMutableDictionary alloc] init]; + _storedEvents = [[NSMutableDictionary alloc] init]; + _uploadCoordinator = [GDTCORUploadCoordinator sharedInstance]; + } + return self; +} + +- (void)storeEvent:(GDTCOREvent *)event + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion { + GDTCORLogDebug(@"Saving event: %@", event); + if (event == nil) { + GDTCORLogDebug(@"%@", @"The event was nil, so it was not saved."); + return; + } + BOOL hadOriginalCompletion = completion != nil; + if (!completion) { + completion = ^(BOOL wasWritten, NSError *_Nullable error) { + GDTCORLogDebug(@"event %@ stored. success:%@ error:%@", event, wasWritten ? @"YES" : @"NO", + error); + }; + } + + __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; + bgID = [[GDTCORApplication sharedApplication] + beginBackgroundTaskWithName:@"GDTStorage" + expirationHandler:^{ + // End the background task if it's still valid. + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }]; + + dispatch_async(_storageQueue, ^{ + // Check that a backend implementation is available for this target. + NSInteger target = event.target; + + // Check that a prioritizer is available for this target. + id prioritizer = + [GDTCORRegistrar sharedInstance].targetToPrioritizer[@(target)]; + GDTCORAssert(prioritizer, @"There's no prioritizer registered for the given target. Are you " + @"sure you've added the support library for the backend you need?"); + + // Write the transport bytes to disk, get a filename. + GDTCORAssert([event.dataObject transportBytes], + @"The event should have been serialized to bytes"); + NSError *error = nil; + NSURL *eventFile = [self saveEventBytesToDisk:event eventHash:event.hash error:&error]; + if (!eventFile || error) { + GDTCORLogError(GDTCORMCEFileWriteError, @"Event failed to save to disk: %@", error); + completion(NO, error); + return; + } else { + GDTCORLogDebug(@"Event saved to disk: %@", eventFile); + completion(YES, error); + } + + // Add event to tracking collections. + [self addEventToTrackingCollections:event]; + + // Have the prioritizer prioritize the event and save state if there was an onComplete block. + [prioritizer prioritizeEvent:event]; + if (hadOriginalCompletion && [prioritizer respondsToSelector:@selector(saveState)]) { + [prioritizer saveState]; + GDTCORLogDebug(@"Prioritizer %@ has saved state due to an event's onComplete block.", + prioritizer); + } + + // Check the QoS, if it's high priority, notify the target that it has a high priority event. + if (event.qosTier == GDTCOREventQoSFast) { + [self.uploadCoordinator forceUploadForTarget:target]; + } + + // Write state to disk if there was an onComplete block or if we're in the background. + if (hadOriginalCompletion || [[GDTCORApplication sharedApplication] isRunningInBackground]) { + if (hadOriginalCompletion) { + GDTCORLogDebug(@"%@", + @"Saving flat file storage state because a completion block was passed."); + } else { + GDTCORLogDebug( + @"%@", @"Saving flat file storage state because the app is running in the background"); + } + NSError *error; + GDTCOREncodeArchive(self, [GDTCORFlatFileStorage archivePath], &error); + if (error) { + GDTCORLogDebug(@"Serializing GDTCORFlatFileStorage to an archive failed: %@", error); + } + } + + // Cancel or end the associated background task if it's still valid. + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + GDTCORLogDebug(@"Event %@ is stored. There are %ld events stored on disk", event, + (unsigned long)self->_storedEvents.count); + }); +} + +- (void)removeEvents:(NSSet *)eventIDs { + NSSet *eventsToRemove = [eventIDs copy]; + dispatch_async(_storageQueue, ^{ + for (NSNumber *eventID in eventsToRemove) { + // Remove from disk, first and foremost. + GDTCOREvent *event = self->_storedEvents[eventID]; + if (event) { + NSError *error; + if (event.fileURL) { + NSURL *fileURL = event.fileURL; + BOOL result = [[NSFileManager defaultManager] removeItemAtPath:fileURL.path error:&error]; + if (!result || error) { + GDTCORLogWarning(GDTCORMCWFileReadError, + @"There was an error removing an event file: %@", error); + } else { + GDTCORLogDebug(@"Removed event from disk: %@", fileURL); + } + } + + // Remove from the tracking collections. + [self.storedEvents removeObjectForKey:event.eventID]; + [self.targetToEventSet[@(event.target)] removeObject:event]; + } + } + }); +} + +#pragma mark - GDTCORStorageProtocol + +- (void)libraryDataForKey:(nonnull NSString *)key + onComplete: + (nonnull void (^)(NSData *_Nullable, NSError *_Nullable error))onComplete { + dispatch_async(_storageQueue, ^{ + NSString *dataPath = [[[self class] libraryDataPath] stringByAppendingPathComponent:key]; + NSError *error; + NSData *data = [NSData dataWithContentsOfFile:dataPath options:0 error:&error]; + if (onComplete) { + onComplete(data, error); + } + }); +} + +- (void)storeLibraryData:(NSData *)data + forKey:(nonnull NSString *)key + onComplete:(nonnull void (^)(NSError *_Nullable error))onComplete { + if (!data || data.length <= 0) { + if (onComplete) { + onComplete([NSError errorWithDomain:NSInternalInconsistencyException code:-1 userInfo:nil]); + } + return; + } + dispatch_async(_storageQueue, ^{ + NSError *error; + NSString *dataPath = [[[self class] libraryDataPath] stringByAppendingPathComponent:key]; + [data writeToFile:dataPath options:NSDataWritingAtomic error:&error]; + if (onComplete) { + onComplete(error); + } + }); +} + +- (void)removeLibraryDataForKey:(nonnull NSString *)key + onComplete:(nonnull void (^)(NSError *_Nullable error))onComplete { + dispatch_async(_storageQueue, ^{ + NSError *error; + NSString *dataPath = [[[self class] libraryDataPath] stringByAppendingPathComponent:key]; + if ([[NSFileManager defaultManager] fileExistsAtPath:dataPath]) { + [[NSFileManager defaultManager] removeItemAtPath:dataPath error:&error]; + if (onComplete) { + onComplete(error); + } + } + }); +} + +#pragma mark - Private helper methods + +/** Saves the event's dataObject to a file using NSData mechanisms. + * + * @note This method should only be called from a method within a block on _storageQueue to maintain + * thread safety. + * + * @param event The event. + * @param eventHash The hash value of the event. + * @return The filename + */ +- (NSURL *)saveEventBytesToDisk:(GDTCOREvent *)event + eventHash:(NSUInteger)eventHash + error:(NSError **)error { + NSString *eventFileName = [NSString stringWithFormat:@"event-%lu", (unsigned long)eventHash]; + NSError *writingError; + [event writeToGDTPath:eventFileName error:&writingError]; + if (writingError) { + GDTCORLogDebug(@"There was an error saving an event to disk: %@", writingError); + } + return event.fileURL; +} + +/** Adds the event to internal tracking collections. + * + * @note This method should only be called from a method within a block on _storageQueue to maintain + * thread safety. + * + * @param event The event to track. + */ +- (void)addEventToTrackingCollections:(GDTCOREvent *)event { + _storedEvents[event.eventID] = event; + NSNumber *target = @(event.target); + NSMutableSet *events = self.targetToEventSet[target]; + events = events ? events : [[NSMutableSet alloc] init]; + [events addObject:event]; + _targetToEventSet[target] = events; +} + +#pragma mark - GDTCORLifecycleProtocol + +- (void)appWillForeground:(GDTCORApplication *)app { + dispatch_async(_storageQueue, ^{ + NSError *error; + GDTCORDecodeArchive([GDTCORFlatFileStorage class], [GDTCORFlatFileStorage archivePath], nil, + &error); + if (error) { + GDTCORLogDebug(@"Deserializing GDTCORFlatFileStorage from an archive failed: %@", error); + } + }); +} + +- (void)appWillBackground:(GDTCORApplication *)app { + dispatch_async(_storageQueue, ^{ + // Immediately request a background task to run until the end of the current queue of work, and + // cancel it once the work is done. + __block GDTCORBackgroundIdentifier bgID = + [app beginBackgroundTaskWithName:@"GDTStorage" + expirationHandler:^{ + [app endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }]; + NSError *error; + GDTCOREncodeArchive(self, [GDTCORFlatFileStorage archivePath], &error); + if (error) { + GDTCORLogDebug(@"Serializing GDTCORFlatFileStorage to an archive failed: %@", error); + } else { + GDTCORLogDebug(@"Serialized GDTCORFlatFileStorage to %@", + [GDTCORFlatFileStorage archivePath]); + } + + // End the background task if it's still valid. + [app endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }); +} + +- (void)appWillTerminate:(GDTCORApplication *)application { + dispatch_sync(_storageQueue, ^{ + NSError *error; + GDTCOREncodeArchive(self, [GDTCORFlatFileStorage archivePath], &error); + if (error) { + GDTCORLogDebug(@"Serializing GDTCORFlatFileStorage to an archive failed: %@", error); + } else { + GDTCORLogDebug(@"Serialized GDTCORFlatFileStorage to %@", + [GDTCORFlatFileStorage archivePath]); + } + }); +} + +#pragma mark - NSSecureCoding + +/** The NSKeyedCoder key for the storedEvents property. */ +static NSString *const kGDTCORFlatFileStorageStoredEventsKey = @"GDTCORStorageStoredEventsKey"; + +/** The NSKeyedCoder key for the targetToEventSet property. */ +static NSString *const kGDTCORFlatFileStorageTargetToEventSetKey = + @"GDTCORStorageTargetToEventSetKey"; + +/** The NSKeyedCoder key for the uploadCoordinator property. */ +static NSString *const kGDTCORFlatFileStorageUploadCoordinatorKey = + @"GDTCORStorageUploadCoordinatorKey"; + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + // Create the singleton and populate its ivars. + GDTCORFlatFileStorage *sharedInstance = [self.class sharedInstance]; + NSSet *classes = [NSSet setWithObjects:[NSMutableOrderedSet class], [NSMutableDictionary class], + [GDTCOREvent class], nil]; + id storedEvents = [aDecoder decodeObjectOfClasses:classes + forKey:kGDTCORFlatFileStorageStoredEventsKey]; + NSMutableDictionary *events = [[NSMutableDictionary alloc] init]; + if ([storedEvents isKindOfClass:[NSMutableOrderedSet class]]) { + [(NSMutableOrderedSet *)storedEvents + enumerateObjectsUsingBlock:^(GDTCOREvent *_Nonnull obj, NSUInteger idx, + BOOL *_Nonnull stop) { + events[obj.eventID] = obj; + }]; + } else if ([storedEvents isKindOfClass:[NSMutableDictionary class]]) { + events = (NSMutableDictionary *)storedEvents; + } + sharedInstance->_storedEvents = events; + classes = [NSSet + setWithObjects:[NSMutableDictionary class], [NSMutableSet class], [GDTCOREvent class], nil]; + sharedInstance->_targetToEventSet = + [aDecoder decodeObjectOfClasses:classes forKey:kGDTCORFlatFileStorageTargetToEventSetKey]; + sharedInstance->_uploadCoordinator = + [aDecoder decodeObjectOfClass:[GDTCORUploadCoordinator class] + forKey:kGDTCORFlatFileStorageUploadCoordinatorKey]; + return sharedInstance; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + GDTCORFlatFileStorage *sharedInstance = [self.class sharedInstance]; + NSMutableDictionary *storedEvents = sharedInstance->_storedEvents; + if (storedEvents) { + [aCoder encodeObject:storedEvents forKey:kGDTCORFlatFileStorageStoredEventsKey]; + } + NSMutableDictionary *> *targetToEventSet = + sharedInstance->_targetToEventSet; + if (targetToEventSet) { + [aCoder encodeObject:targetToEventSet forKey:kGDTCORFlatFileStorageTargetToEventSetKey]; + } + GDTCORUploadCoordinator *uploadCoordinator = sharedInstance->_uploadCoordinator; + if (uploadCoordinator) { + [aCoder encodeObject:uploadCoordinator forKey:kGDTCORFlatFileStorageUploadCoordinatorKey]; + } +} + +@end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m index cd554ad..9228c34 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m @@ -20,7 +20,6 @@ #import #import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" -#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" #import "GDTCORLibrary/Private/GDTCORTransformer_Private.h" #import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" @@ -72,19 +71,15 @@ - (void)dealloc { - (void)applicationDidEnterBackground:(NSNotification *)notification { GDTCORApplication *application = [GDTCORApplication sharedApplication]; if ([[GDTCORTransformer sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORTransformer that the app is backgrounding."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORTransformer that the app is backgrounding."); [[GDTCORTransformer sharedInstance] appWillBackground:application]; } - if ([[GDTCORStorage sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORStorage that the app is backgrounding."); - [[GDTCORStorage sharedInstance] appWillBackground:application]; - } if ([[GDTCORUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORUploadCoordinator that the app is backgrounding."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORUploadCoordinator that the app is backgrounding."); [[GDTCORUploadCoordinator sharedInstance] appWillBackground:application]; } if ([[GDTCORRegistrar sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORRegistrar that the app is backgrounding."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORRegistrar that the app is backgrounding."); [[GDTCORRegistrar sharedInstance] appWillBackground:application]; } } @@ -92,19 +87,15 @@ - (void)applicationDidEnterBackground:(NSNotification *)notification { - (void)applicationWillEnterForeground:(NSNotification *)notification { GDTCORApplication *application = [GDTCORApplication sharedApplication]; if ([[GDTCORTransformer sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORTransformer that the app is foregrounding."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORTransformer that the app is foregrounding."); [[GDTCORTransformer sharedInstance] appWillForeground:application]; } - if ([[GDTCORStorage sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORStorage that the app is foregrounding."); - [[GDTCORStorage sharedInstance] appWillForeground:application]; - } if ([[GDTCORUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORUploadCoordinator that the app is foregrounding."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORUploadCoordinator that the app is foregrounding."); [[GDTCORUploadCoordinator sharedInstance] appWillForeground:application]; } if ([[GDTCORRegistrar sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORRegistrar that the app is foregrounding."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORRegistrar that the app is foregrounding."); [[GDTCORRegistrar sharedInstance] appWillForeground:application]; } } @@ -112,19 +103,15 @@ - (void)applicationWillEnterForeground:(NSNotification *)notification { - (void)applicationWillTerminate:(NSNotification *)notification { GDTCORApplication *application = [GDTCORApplication sharedApplication]; if ([[GDTCORTransformer sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORTransformer that the app is terminating."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORTransformer that the app is terminating."); [[GDTCORTransformer sharedInstance] appWillTerminate:application]; } - if ([[GDTCORStorage sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORStorage that the app is terminating."); - [[GDTCORStorage sharedInstance] appWillTerminate:application]; - } if ([[GDTCORUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORUploadCoordinator that the app is terminating."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORUploadCoordinator that the app is terminating."); [[GDTCORUploadCoordinator sharedInstance] appWillTerminate:application]; } if ([[GDTCORRegistrar sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - GDTCORLogDebug("%@", @"Signaling GDTCORRegistrar that the app is terminating."); + GDTCORLogDebug(@"%@", @"Signaling GDTCORRegistrar that the app is terminating."); [[GDTCORRegistrar sharedInstance] appWillTerminate:application]; } } diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m index 778ced9..d0fea43 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m @@ -14,10 +14,11 @@ * limitations under the License. */ -#import +#import "GDTCORLibrary/Public/GDTCORPlatform.h" #import #import +#import #import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" @@ -39,15 +40,211 @@ NSString *const kGDTCORApplicationWillTerminateNotification = @"GDTCORApplicationWillTerminateNotification"; + +NSURL *GDTCORRootDirectory(void) { + static NSURL *GDTPath; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *cachePath = + NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; + GDTPath = + [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/google-sdks-events", cachePath]]; + GDTCORLogDebug(@"GDT's state will be saved to: %@", GDTPath); + if (![[NSFileManager defaultManager] fileExistsAtPath:GDTPath.path]) { + NSError *error; + [[NSFileManager defaultManager] createDirectoryAtPath:GDTPath.path + withIntermediateDirectories:YES + attributes:nil + error:&error]; + GDTCORAssert(error == nil, @"There was an error creating GDT's path"); + } + }); + return GDTPath; +} + +BOOL GDTCORReachabilityFlagsReachable(GDTCORNetworkReachabilityFlags flags) { #if !TARGET_OS_WATCH -BOOL GDTCORReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags) { + BOOL reachable = + (flags & kSCNetworkReachabilityFlagsReachable) == kSCNetworkReachabilityFlagsReachable; + BOOL connectionRequired = (flags & kSCNetworkReachabilityFlagsConnectionRequired) == + kSCNetworkReachabilityFlagsConnectionRequired; + return reachable && !connectionRequired; +#else + return (flags & kGDTCORNetworkReachabilityFlagsReachable) == + kGDTCORNetworkReachabilityFlagsReachable; +#endif +} + +BOOL GDTCORReachabilityFlagsContainWWAN(GDTCORNetworkReachabilityFlags flags) { #if TARGET_OS_IOS return (flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN; #else + // Assume network connection not WWAN on macOS, tvOS, watchOS. return NO; #endif // TARGET_OS_IOS } -#endif // !TARGET_OS_WATCH + +GDTCORNetworkType GDTCORNetworkTypeMessage() { +#if !TARGET_OS_WATCH + SCNetworkReachabilityFlags reachabilityFlags = [GDTCORReachability currentFlags]; + if ((reachabilityFlags & kSCNetworkReachabilityFlagsReachable) == + kSCNetworkReachabilityFlagsReachable) { + if (GDTCORReachabilityFlagsContainWWAN(reachabilityFlags)) { + return GDTCORNetworkTypeMobile; + } else { + return GDTCORNetworkTypeWIFI; + } + } +#endif + return GDTCORNetworkTypeUNKNOWN; +} + +GDTCORNetworkMobileSubtype GDTCORNetworkMobileSubTypeMessage() { +#if TARGET_OS_IOS + static NSDictionary *CTRadioAccessTechnologyToNetworkSubTypeMessage; + static CTTelephonyNetworkInfo *networkInfo; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + CTRadioAccessTechnologyToNetworkSubTypeMessage = @{ + CTRadioAccessTechnologyGPRS : @(GDTCORNetworkMobileSubtypeGPRS), + CTRadioAccessTechnologyEdge : @(GDTCORNetworkMobileSubtypeEdge), + CTRadioAccessTechnologyWCDMA : @(GDTCORNetworkMobileSubtypeWCDMA), + CTRadioAccessTechnologyHSDPA : @(GDTCORNetworkMobileSubtypeHSDPA), + CTRadioAccessTechnologyHSUPA : @(GDTCORNetworkMobileSubtypeHSUPA), + CTRadioAccessTechnologyCDMA1x : @(GDTCORNetworkMobileSubtypeCDMA1x), + CTRadioAccessTechnologyCDMAEVDORev0 : @(GDTCORNetworkMobileSubtypeCDMAEVDORev0), + CTRadioAccessTechnologyCDMAEVDORevA : @(GDTCORNetworkMobileSubtypeCDMAEVDORevA), + CTRadioAccessTechnologyCDMAEVDORevB : @(GDTCORNetworkMobileSubtypeCDMAEVDORevB), + CTRadioAccessTechnologyeHRPD : @(GDTCORNetworkMobileSubtypeHRPD), + CTRadioAccessTechnologyLTE : @(GDTCORNetworkMobileSubtypeLTE), + }; + networkInfo = [[CTTelephonyNetworkInfo alloc] init]; + }); + NSString *networkCurrentRadioAccessTechnology; +#if TARGET_OS_MACCATALYST + NSDictionary *networkCurrentRadioAccessTechnologyDict = + networkInfo.serviceCurrentRadioAccessTechnology; + if (networkCurrentRadioAccessTechnologyDict.count) { + networkCurrentRadioAccessTechnology = networkCurrentRadioAccessTechnologyDict.allValues[0]; + } +#else // TARGET_OS_MACCATALYST +#if defined(__IPHONE_12_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 120000 + if (@available(iOS 12.0, *)) { + NSDictionary *networkCurrentRadioAccessTechnologyDict = + networkInfo.serviceCurrentRadioAccessTechnology; + if (networkCurrentRadioAccessTechnologyDict.count) { + // In iOS 12, multiple radio technologies can be captured. We prefer not particular radio + // tech to another, so we'll just return the first value in the dictionary. + networkCurrentRadioAccessTechnology = networkCurrentRadioAccessTechnologyDict.allValues[0]; + } + } else { +#else // defined(__IPHONE_12_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 120000 + networkCurrentRadioAccessTechnology = networkInfo.currentRadioAccessTechnology; +#endif // // defined(__IPHONE_12_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 120000 + } +#endif // TARGET_OS_MACCATALYST + if (networkCurrentRadioAccessTechnology) { + NSNumber *networkMobileSubtype = + CTRadioAccessTechnologyToNetworkSubTypeMessage[networkCurrentRadioAccessTechnology]; + return networkMobileSubtype.intValue; + } else { + return GDTCORNetworkMobileSubtypeUNKNOWN; + } +#else + return GDTCORNetworkMobileSubtypeUNKNOWN; +#endif +} + +NSData *_Nullable GDTCOREncodeArchive(id obj, + NSString *archivePath, + NSError *_Nullable *error) { + NSData *resultData; +#if (defined(__IPHONE_11_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000) || \ + (defined(__MAC_10_13) && MAC_OS_X_VERSION_MAX_ALLOWED >= 101300) || \ + (defined(__TVOS_11_0) && __TV_OS_VERSION_MAX_ALLOWED >= 110000) || \ + (defined(__WATCHOS_4_0) && __WATCH_OS_VERSION_MAX_ALLOWED >= 040000) || \ + (defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST) + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4, *)) { + resultData = [NSKeyedArchiver archivedDataWithRootObject:obj + requiringSecureCoding:YES + error:error]; + if (*error) { + GDTCORLogDebug(@"Encoding an object failed: %@", *error); + return nil; + } + if (archivePath) { + BOOL result = [resultData writeToFile:archivePath options:NSDataWritingAtomic error:error]; + if (result == NO || *error) { + GDTCORLogDebug(@"Attempt to write archive failed: URL:%@ error:%@", archivePath, *error); + } else { + GDTCORLogDebug(@"Writing archive succeeded: %@", archivePath); + } + } + } else { +#endif + BOOL result = NO; + @try { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + resultData = [NSKeyedArchiver archivedDataWithRootObject:obj]; +#pragma clang diagnostic pop + if (archivePath) { + result = [resultData writeToFile:archivePath options:NSDataWritingAtomic error:error]; + if (result == NO || *error) { + GDTCORLogDebug(@"Attempt to write archive failed: URL:%@ error:%@", archivePath, *error); + } else { + GDTCORLogDebug(@"Writing archive succeeded: %@", archivePath); + } + } + } @catch (NSException *exception) { + NSString *errorString = + [NSString stringWithFormat:@"An exception was thrown during encoding: %@", exception]; + *error = [NSError errorWithDomain:NSCocoaErrorDomain + code:-1 + userInfo:@{NSLocalizedFailureReasonErrorKey : errorString}]; + } + GDTCORLogDebug(@"Attempt to write archive. successful:%@ URL:%@ error:%@", + result ? @"YES" : @"NO", archivePath, *error); + } + return resultData; +} + +id _Nullable GDTCORDecodeArchive(Class archiveClass, + NSString *_Nullable archivePath, + NSData *_Nullable archiveData, + NSError *_Nullable *error) { + id unarchivedObject = nil; +#if (defined(__IPHONE_11_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000) || \ + (defined(__MAC_10_13) && MAC_OS_X_VERSION_MAX_ALLOWED >= 101300) || \ + (defined(__TVOS_11_0) && __TV_OS_VERSION_MAX_ALLOWED >= 110000) || \ + (defined(__WATCHOS_4_0) && __WATCH_OS_VERSION_MAX_ALLOWED >= 040000) || \ + (defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST) + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4, *)) { + NSData *data = archiveData ? archiveData : [NSData dataWithContentsOfFile:archivePath]; + if (data) { + unarchivedObject = [NSKeyedUnarchiver unarchivedObjectOfClass:archiveClass + fromData:data + error:error]; + } + } else { +#endif + @try { + NSData *archivedData = + archiveData ? archiveData : [NSData dataWithContentsOfFile:archivePath]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + unarchivedObject = [NSKeyedUnarchiver unarchiveObjectWithData:archivedData]; +#pragma clang diagnostic pop + } @catch (NSException *exception) { + NSString *errorString = + [NSString stringWithFormat:@"An exception was thrown during encoding: %@", exception]; + *error = [NSError errorWithDomain:NSCocoaErrorDomain + code:-1 + userInfo:@{NSLocalizedFailureReasonErrorKey : errorString}]; + } + } + return unarchivedObject; +} @interface GDTCORApplication () /** @@ -60,11 +257,21 @@ @interface GDTCORApplication () @implementation GDTCORApplication +#if TARGET_OS_WATCH +/** A dispatch queue on which all task semaphores will populate and remove from + * gBackgroundIdentifierToSemaphoreMap. + */ +static dispatch_queue_t gSemaphoreQueue; + +/** For mapping backgroundIdentifier to task semaphore. */ +static NSMutableDictionary *gBackgroundIdentifierToSemaphoreMap; +#endif + + (void)load { GDTCORLogDebug( - "%@", @"GDT is initializing. Please note that if you quit the app via the " - "debugger and not through a lifecycle event, event data will remain on disk but " - "storage won't have a reference to them since the singleton wasn't saved to disk."); + @"%@", @"GDT is initializing. Please note that if you quit the app via the " + "debugger and not through a lifecycle event, event data will remain on disk but " + "storage won't have a reference to them since the singleton wasn't saved to disk."); #if TARGET_OS_IOS || TARGET_OS_TV // If this asserts, please file a bug at https://github.com/firebase/firebase-ios-sdk/issues. GDTCORFatalAssert( @@ -74,6 +281,21 @@ + (void)load { [self sharedApplication]; } ++ (void)initialize { +#if TARGET_OS_WATCH + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + gSemaphoreQueue = dispatch_queue_create("com.google.GDTCORApplication", DISPATCH_QUEUE_SERIAL); + GDTCORLogDebug( + @"%@", + @"GDTCORApplication is initializing on watchOS, gSemaphoreQueue has been initialized."); + gBackgroundIdentifierToSemaphoreMap = [[NSMutableDictionary alloc] init]; + GDTCORLogDebug(@"%@", @"GDTCORApplication is initializing on watchOS, " + @"gBackgroundIdentifierToSemaphoreMap has been initialized."); + }); +#endif +} + + (nullable GDTCORApplication *)sharedApplication { static GDTCORApplication *application; static dispatch_once_t onceToken; @@ -125,72 +347,179 @@ - (instancetype)init { selector:@selector(macOSApplicationWillTerminate:) name:NSApplicationWillTerminateNotification object:nil]; -#endif // TARGET_OS_IOS || TARGET_OS_TV + +#elif TARGET_OS_WATCH + // TODO: Notification on watchOS platform is currently posted by strings which are frangible. + // TODO: Needs improvements here. + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter addObserver:self + selector:@selector(iOSApplicationDidEnterBackground:) + name:@"UIApplicationDidEnterBackgroundNotification" + object:nil]; + [notificationCenter addObserver:self + selector:@selector(iOSApplicationWillEnterForeground:) + name:@"UIApplicationWillEnterForegroundNotification" + object:nil]; + + // Adds observers for app extension on watchOS platform + [notificationCenter addObserver:self + selector:@selector(iOSApplicationDidEnterBackground:) + name:NSExtensionHostDidEnterBackgroundNotification + object:nil]; + [notificationCenter addObserver:self + selector:@selector(iOSApplicationWillEnterForeground:) + name:NSExtensionHostWillEnterForegroundNotification + object:nil]; +#endif } return self; } +#if TARGET_OS_WATCH +/** Generates and maps a unique background identifier to the given semaphore. + * + * @param semaphore The semaphore to map. + * @return A unique GDTCORBackgroundIdentifier mapped to the given semaphore. + */ ++ (GDTCORBackgroundIdentifier)createAndMapBackgroundIdentifierToSemaphore: + (dispatch_semaphore_t)semaphore { + __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; + dispatch_queue_t queue = gSemaphoreQueue; + NSMutableDictionary *map = gBackgroundIdentifierToSemaphoreMap; + if (queue && map) { + dispatch_sync(queue, ^{ + bgID = arc4random(); + NSNumber *bgIDNumber = @(bgID); + while (bgID == GDTCORBackgroundIdentifierInvalid || map[bgIDNumber]) { + bgID = arc4random(); + bgIDNumber = @(bgID); + } + map[bgIDNumber] = semaphore; + }); + } + return bgID; +} + +/** Returns the semaphore mapped to given bgID and removes the value from the map. + * + * @param bgID The unique NSUInteger as GDTCORBackgroundIdentifier. + * @return The semaphore mapped by given bgID. + */ ++ (dispatch_semaphore_t)semaphoreForBackgroundIdentifier:(GDTCORBackgroundIdentifier)bgID { + __block dispatch_semaphore_t semaphore; + dispatch_queue_t queue = gSemaphoreQueue; + NSMutableDictionary *map = gBackgroundIdentifierToSemaphoreMap; + NSNumber *bgIDNumber = @(bgID); + if (queue && map) { + dispatch_sync(queue, ^{ + semaphore = map[bgIDNumber]; + [map removeObjectForKey:bgIDNumber]; + }); + } + return semaphore; +} +#endif + - (GDTCORBackgroundIdentifier)beginBackgroundTaskWithName:(NSString *)name expirationHandler:(void (^)(void))handler { - GDTCORBackgroundIdentifier bgID = - [[self sharedApplicationForBackgroundTask] beginBackgroundTaskWithName:name - expirationHandler:handler]; + __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; +#if !TARGET_OS_WATCH + bgID = [[self sharedApplicationForBackgroundTask] beginBackgroundTaskWithName:name + expirationHandler:handler]; #if !NDEBUG if (bgID != GDTCORBackgroundIdentifierInvalid) { - GDTCORLogDebug("Creating background task with name:%@ bgID:%ld", name, (long)bgID); + GDTCORLogDebug(@"Creating background task with name:%@ bgID:%ld", name, (long)bgID); } #endif // !NDEBUG +#elif TARGET_OS_WATCH + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + bgID = [GDTCORApplication createAndMapBackgroundIdentifierToSemaphore:semaphore]; + if (bgID != GDTCORBackgroundIdentifierInvalid) { + GDTCORLogDebug(@"Creating activity with name:%@ bgID:%ld on watchOS.", name, (long)bgID); + } + [[self sharedNSProcessInfoForBackgroundTask] + performExpiringActivityWithReason:name + usingBlock:^(BOOL expired) { + if (expired) { + if (handler) { + handler(); + } + dispatch_semaphore_signal(semaphore); + GDTCORLogDebug( + @"Activity with name:%@ bgID:%ld on watchOS is expiring.", + name, (long)bgID); + } else { + dispatch_semaphore_wait( + semaphore, + dispatch_time(DISPATCH_TIME_NOW, 30 * NSEC_PER_SEC)); + } + }]; +#endif return bgID; } - (void)endBackgroundTask:(GDTCORBackgroundIdentifier)bgID { +#if !TARGET_OS_WATCH if (bgID != GDTCORBackgroundIdentifierInvalid) { - GDTCORLogDebug("Ending background task with ID:%ld was successful", (long)bgID); + GDTCORLogDebug(@"Ending background task with ID:%ld was successful", (long)bgID); [[self sharedApplicationForBackgroundTask] endBackgroundTask:bgID]; return; } +#elif TARGET_OS_WATCH + if (bgID != GDTCORBackgroundIdentifierInvalid) { + dispatch_semaphore_t semaphore = [GDTCORApplication semaphoreForBackgroundIdentifier:bgID]; + GDTCORLogDebug(@"Ending activity with bgID:%ld on watchOS.", (long)bgID); + if (semaphore) { + dispatch_semaphore_signal(semaphore); + GDTCORLogDebug(@"Signaling semaphore with bgID:%ld on watchOS.", (long)bgID); + } else { + GDTCORLogDebug(@"Semaphore with bgID:%ld is nil on watchOS.", (long)bgID); + } + } +#endif // !TARGET_OS_WATCH } #pragma mark - App environment helpers - (BOOL)isAppExtension { -#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH BOOL appExtension = [[[NSBundle mainBundle] bundlePath] hasSuffix:@".appex"]; return appExtension; -#elif TARGET_OS_OSX - return NO; -#endif } -/** Returns a UIApplication instance if on the appropriate platform. +/** Returns a UIApplication or NSProcessInfo instance if on the appropriate platform. * - * @return The shared UIApplication if on the appropriate platform. + * @return The shared UIApplication or NSProcessInfo if on the appropriate platform. */ #if TARGET_OS_IOS || TARGET_OS_TV - (nullable UIApplication *)sharedApplicationForBackgroundTask { +#elif TARGET_OS_WATCH +- (nullable NSProcessInfo *)sharedNSProcessInfoForBackgroundTask { #else - (nullable id)sharedApplicationForBackgroundTask { #endif - if ([self isAppExtension]) { - return nil; - } - id sharedApplication = nil; - Class uiApplicationClass = NSClassFromString(@"UIApplication"); - if (uiApplicationClass && - [uiApplicationClass respondsToSelector:(NSSelectorFromString(@"sharedApplication"))]) { - sharedApplication = [uiApplicationClass sharedApplication]; + id sharedInstance = nil; +#if TARGET_OS_IOS || TARGET_OS_TV + if (![self isAppExtension]) { + Class uiApplicationClass = NSClassFromString(@"UIApplication"); + if (uiApplicationClass && + [uiApplicationClass respondsToSelector:(NSSelectorFromString(@"sharedApplication"))]) { + sharedInstance = [uiApplicationClass sharedApplication]; + } } - return sharedApplication; +#elif TARGET_OS_WATCH + sharedInstance = [NSProcessInfo processInfo]; +#endif + return sharedInstance; } -#pragma mark - UIApplicationDelegate +#pragma mark - UIApplicationDelegate and WKExtensionDelegate -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH - (void)iOSApplicationDidEnterBackground:(NSNotification *)notif { _isRunningInBackground = YES; NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is backgrounding."); + GDTCORLogDebug(@"%@", @"GDTCORPlatform is sending a notif that the app is backgrounding."); [notifCenter postNotificationName:kGDTCORApplicationDidEnterBackgroundNotification object:nil]; } @@ -198,13 +527,17 @@ - (void)iOSApplicationWillEnterForeground:(NSNotification *)notif { _isRunningInBackground = NO; NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is foregrounding."); + GDTCORLogDebug(@"%@", @"GDTCORPlatform is sending a notif that the app is foregrounding."); [notifCenter postNotificationName:kGDTCORApplicationWillEnterForegroundNotification object:nil]; } +#endif // TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH +#pragma mark - UIApplicationDelegate + +#if TARGET_OS_IOS || TARGET_OS_TV - (void)iOSApplicationWillTerminate:(NSNotification *)notif { NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is terminating."); + GDTCORLogDebug(@"%@", @"GDTCORPlatform is sending a notif that the app is terminating."); [notifCenter postNotificationName:kGDTCORApplicationWillTerminateNotification object:nil]; } #endif // TARGET_OS_IOS || TARGET_OS_TV @@ -214,7 +547,7 @@ - (void)iOSApplicationWillTerminate:(NSNotification *)notif { #if TARGET_OS_OSX - (void)macOSApplicationWillTerminate:(NSNotification *)notif { NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is terminating."); + GDTCORLogDebug(@"%@", @"GDTCORPlatform is sending a notif that the app is terminating."); [notifCenter postNotificationName:kGDTCORApplicationWillTerminateNotification object:nil]; } #endif // TARGET_OS_OSX diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m index 1c6555a..8e8bf38 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m @@ -14,9 +14,8 @@ * limitations under the License. */ -#import "GDTCORLibrary/Private/GDTCORReachability.h" +#import "GDTCORLibrary/Public/GDTCORReachability.h" #import "GDTCORLibrary/Private/GDTCORReachability_Private.h" -#if !TARGET_OS_WATCH #import @@ -28,22 +27,22 @@ * @param flags The new flag values. * @param info Any data that might be passed in by the callback. */ -static void GDTCORReachabilityCallback(SCNetworkReachabilityRef reachability, - SCNetworkReachabilityFlags flags, +static void GDTCORReachabilityCallback(GDTCORNetworkReachabilityRef reachability, + GDTCORNetworkReachabilityFlags flags, void *info); @implementation GDTCORReachability { /** The reachability object. */ - SCNetworkReachabilityRef _reachabilityRef; + GDTCORNetworkReachabilityRef _reachabilityRef; /** The queue on which callbacks and all work will occur. */ dispatch_queue_t _reachabilityQueue; /** Flags specified by reachability callbacks. */ - SCNetworkConnectionFlags _callbackFlags; + GDTCORNetworkReachabilityFlags _callbackFlags; } -+ (void)load { ++ (void)initialize { [self sharedInstance]; } @@ -56,18 +55,24 @@ + (instancetype)sharedInstance { return sharedInstance; } -+ (SCNetworkReachabilityFlags)currentFlags { - __block SCNetworkReachabilityFlags currentFlags; ++ (GDTCORNetworkReachabilityFlags)currentFlags { + __block GDTCORNetworkReachabilityFlags currentFlags; +#if !TARGET_OS_WATCH dispatch_sync([GDTCORReachability sharedInstance] -> _reachabilityQueue, ^{ GDTCORReachability *reachability = [GDTCORReachability sharedInstance]; - currentFlags = reachability->_flags ? reachability->_flags : reachability->_callbackFlags; - GDTCORLogDebug("Initial reachability flags determined: %d", currentFlags); + currentFlags = + reachability->_callbackFlags ? reachability->_callbackFlags : reachability->_flags; + GDTCORLogDebug(@"Initial reachability flags determined: %d", currentFlags); }); +#else + currentFlags = kGDTCORNetworkReachabilityFlagsReachable; +#endif return currentFlags; } - (instancetype)init { self = [super init]; +#if !TARGET_OS_WATCH if (self) { struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); @@ -92,15 +97,16 @@ - (instancetype)init { dispatch_async(_reachabilityQueue, ^{ Boolean valid = SCNetworkReachabilityGetFlags(self->_reachabilityRef, &self->_flags); if (!valid) { - GDTCORLogDebug("%@", @"Determining reachability failed."); + GDTCORLogDebug(@"%@", @"Determining reachability failed."); self->_flags = 0; } }); } +#endif return self; } -- (void)setCallbackFlags:(SCNetworkReachabilityFlags)flags { +- (void)setCallbackFlags:(GDTCORNetworkReachabilityFlags)flags { if (_callbackFlags != flags) { self->_callbackFlags = flags; } @@ -108,11 +114,12 @@ - (void)setCallbackFlags:(SCNetworkReachabilityFlags)flags { @end -static void GDTCORReachabilityCallback(SCNetworkReachabilityRef reachability, - SCNetworkReachabilityFlags flags, +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused-function" +static void GDTCORReachabilityCallback(GDTCORNetworkReachabilityRef reachability, + GDTCORNetworkReachabilityFlags flags, void *info) { - GDTCORLogDebug("Reachability changed, new flags: %d", flags); +#pragma clang diagnostic pop + GDTCORLogDebug(@"Reachability changed, new flags: %d", flags); [[GDTCORReachability sharedInstance] setCallbackFlags:flags]; } - -#endif diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m index 1440376..8f7cacb 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m @@ -17,7 +17,11 @@ #import "GDTCORLibrary/Public/GDTCORRegistrar.h" #import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" -#import +#import "GDTCORLibrary/Public/GDTCORConsoleLogger.h" + +id _Nullable GDTCORStorageInstanceForTarget(GDTCORTarget target) { + return [GDTCORRegistrar sharedInstance].targetToStorage[@(target)]; +} @implementation GDTCORRegistrar { /** Backing ivar for targetToUploader property. */ @@ -25,6 +29,9 @@ @implementation GDTCORRegistrar { /** Backing ivar for targetToPrioritizer property. */ NSMutableDictionary> *_targetToPrioritizer; + + /** Backing ivar for targetToStorage property. */ + NSMutableDictionary> *_targetToStorage; } + (instancetype)sharedInstance { @@ -42,6 +49,7 @@ - (instancetype)init { _registrarQueue = dispatch_queue_create("com.google.GDTCORRegistrar", DISPATCH_QUEUE_SERIAL); _targetToPrioritizer = [[NSMutableDictionary alloc] init]; _targetToUploader = [[NSMutableDictionary alloc] init]; + _targetToStorage = [[NSMutableDictionary alloc] init]; } return self; } @@ -51,18 +59,29 @@ - (void)registerUploader:(id)backend target:(GDTCORTarget)target dispatch_async(_registrarQueue, ^{ GDTCORRegistrar *strongSelf = weakSelf; if (strongSelf) { - GDTCORLogDebug("Registered an uploader: %@ for target:%ld", backend, (long)target); + GDTCORLogDebug(@"Registered an uploader: %@ for target:%ld", backend, (long)target); strongSelf->_targetToUploader[@(target)] = backend; } }); } +- (void)registerStorage:(id)storage target:(GDTCORTarget)target { + __weak GDTCORRegistrar *weakSelf = self; + dispatch_async(_registrarQueue, ^{ + GDTCORRegistrar *strongSelf = weakSelf; + if (strongSelf) { + GDTCORLogDebug(@"Registered storage: %@ for target:%ld", storage, (long)target); + strongSelf->_targetToStorage[@(target)] = storage; + } + }); +} + - (void)registerPrioritizer:(id)prioritizer target:(GDTCORTarget)target { __weak GDTCORRegistrar *weakSelf = self; dispatch_async(_registrarQueue, ^{ GDTCORRegistrar *strongSelf = weakSelf; if (strongSelf) { - GDTCORLogDebug("Registered a prioritizer: %@ for target:%ld", prioritizer, (long)target); + GDTCORLogDebug(@"Registered a prioritizer: %@ for target:%ld", prioritizer, (long)target); strongSelf->_targetToPrioritizer[@(target)] = prioritizer; } }); @@ -92,51 +111,81 @@ - (void)registerPrioritizer:(id)prioritizer target:(GDTCORTar return targetToPrioritizer; } +- (NSMutableDictionary> *)targetToStorage { + __block NSMutableDictionary> *targetToStorage; + __weak GDTCORRegistrar *weakSelf = self; + dispatch_sync(_registrarQueue, ^{ + GDTCORRegistrar *strongSelf = weakSelf; + if (strongSelf) { + targetToStorage = strongSelf->_targetToStorage; + } + }); + return targetToStorage; +} + #pragma mark - GDTCORLifecycleProtocol - (void)appWillBackground:(nonnull GDTCORApplication *)app { - dispatch_async(_registrarQueue, ^{ - for (id uploader in [self->_targetToUploader allValues]) { - if ([uploader respondsToSelector:@selector(appWillBackground:)]) { - [uploader appWillBackground:app]; - } + NSArray> *uploaders = [self.targetToUploader allValues]; + for (id uploader in uploaders) { + if ([uploader respondsToSelector:@selector(appWillBackground:)]) { + [uploader appWillBackground:app]; } - for (id prioritizer in [self->_targetToPrioritizer allValues]) { - if ([prioritizer respondsToSelector:@selector(appWillBackground:)]) { - [prioritizer appWillBackground:app]; - } + } + NSArray> *prioritizers = [self.targetToPrioritizer allValues]; + for (id prioritizer in prioritizers) { + if ([prioritizer respondsToSelector:@selector(appWillBackground:)]) { + [prioritizer appWillBackground:app]; } - }); + } + NSArray> *storages = [self.targetToStorage allValues]; + for (id storage in storages) { + if ([storage respondsToSelector:@selector(appWillBackground:)]) { + [storage appWillBackground:app]; + } + } } - (void)appWillForeground:(nonnull GDTCORApplication *)app { - dispatch_async(_registrarQueue, ^{ - for (id uploader in [self->_targetToUploader allValues]) { - if ([uploader respondsToSelector:@selector(appWillForeground:)]) { - [uploader appWillForeground:app]; - } + NSArray> *uploaders = [self.targetToUploader allValues]; + for (id uploader in uploaders) { + if ([uploader respondsToSelector:@selector(appWillForeground:)]) { + [uploader appWillForeground:app]; } - for (id prioritizer in [self->_targetToPrioritizer allValues]) { - if ([prioritizer respondsToSelector:@selector(appWillForeground:)]) { - [prioritizer appWillForeground:app]; - } + } + NSArray> *prioritizers = [self.targetToPrioritizer allValues]; + for (id prioritizer in prioritizers) { + if ([prioritizer respondsToSelector:@selector(appWillForeground:)]) { + [prioritizer appWillForeground:app]; } - }); + } + NSArray> *storages = [self.targetToStorage allValues]; + for (id storage in storages) { + if ([storage respondsToSelector:@selector(appWillForeground:)]) { + [storage appWillForeground:app]; + } + } } - (void)appWillTerminate:(nonnull GDTCORApplication *)app { - dispatch_sync(_registrarQueue, ^{ - for (id uploader in [self->_targetToUploader allValues]) { - if ([uploader respondsToSelector:@selector(appWillTerminate:)]) { - [uploader appWillTerminate:app]; - } + NSArray> *uploaders = [self.targetToUploader allValues]; + for (id uploader in uploaders) { + if ([uploader respondsToSelector:@selector(appWillTerminate:)]) { + [uploader appWillTerminate:app]; } - for (id prioritizer in [self->_targetToPrioritizer allValues]) { - if ([prioritizer respondsToSelector:@selector(appWillTerminate:)]) { - [prioritizer appWillTerminate:app]; - } + } + NSArray> *prioritizers = [self.targetToPrioritizer allValues]; + for (id prioritizer in prioritizers) { + if ([prioritizer respondsToSelector:@selector(appWillTerminate:)]) { + [prioritizer appWillTerminate:app]; } - }); + } + NSArray> *storages = [self.targetToStorage allValues]; + for (id storage in storages) { + if ([storage respondsToSelector:@selector(appWillTerminate:)]) { + [storage appWillTerminate:app]; + } + } } @end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m deleted file mode 100644 index 9a37883..0000000 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright 2018 Google - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#import "GDTCORLibrary/Private/GDTCORStorage.h" -#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" - -#import -#import -#import -#import -#import - -#import "GDTCORLibrary/Private/GDTCOREvent_Private.h" -#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" -#import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" - -/** Creates and/or returns a singleton NSString that is the shared storage path. - * - * @return The SDK event storage path. - */ -static NSString *GDTCORStoragePath() { - static NSString *storagePath; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSString *cachePath = - NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; - storagePath = [NSString stringWithFormat:@"%@/google-sdks-events", cachePath]; - GDTCORLogDebug("Events will be saved to %@", storagePath); - }); - return storagePath; -} - -@implementation GDTCORStorage - -+ (NSString *)archivePath { - static NSString *archivePath; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - archivePath = [GDTCORStoragePath() stringByAppendingPathComponent:@"GDTCORStorageArchive"]; - }); - return archivePath; -} - -+ (instancetype)sharedInstance { - static GDTCORStorage *sharedStorage; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedStorage = [[GDTCORStorage alloc] init]; - }); - return sharedStorage; -} - -- (instancetype)init { - self = [super init]; - if (self) { - _storageQueue = dispatch_queue_create("com.google.GDTCORStorage", DISPATCH_QUEUE_SERIAL); - _targetToEventSet = [[NSMutableDictionary alloc] init]; - _storedEvents = [[NSMutableOrderedSet alloc] init]; - _uploadCoordinator = [GDTCORUploadCoordinator sharedInstance]; - } - return self; -} - -- (void)storeEvent:(GDTCOREvent *)event - onComplete:(void (^)(BOOL wasWritten, NSError *error))completion { - GDTCORLogDebug("Saving event: %@", event); - if (event == nil) { - GDTCORLogDebug("%@", @"The event was nil, so it was not saved."); - return; - } - if (!completion) { - completion = ^(BOOL wasWritten, NSError *error) { - }; - } - - [self createEventDirectoryIfNotExists]; - - __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; - bgID = [[GDTCORApplication sharedApplication] - beginBackgroundTaskWithName:@"GDTStorage" - expirationHandler:^{ - // End the background task if it's still valid. - [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; - bgID = GDTCORBackgroundIdentifierInvalid; - }]; - - dispatch_async(_storageQueue, ^{ - // Check that a backend implementation is available for this target. - NSInteger target = event.target; - - // Check that a prioritizer is available for this target. - id prioritizer = - [GDTCORRegistrar sharedInstance].targetToPrioritizer[@(target)]; - GDTCORAssert(prioritizer, @"There's no prioritizer registered for the given target. Are you " - @"sure you've added the support library for the backend you need?"); - - // Write the transport bytes to disk, get a filename. - GDTCORAssert(event.dataObjectTransportBytes, @"The event should have been serialized to bytes"); - NSError *error = nil; - NSURL *eventFile = [self saveEventBytesToDisk:event.dataObjectTransportBytes - eventHash:event.hash - error:&error]; - GDTCORLogDebug("Event saved to disk: %@", eventFile); - GDTCORDataFuture *dataFuture = [[GDTCORDataFuture alloc] initWithFileURL:eventFile]; - GDTCORStoredEvent *storedEvent = [event storedEventWithDataFuture:dataFuture]; - completion(eventFile != nil, error); - - // Add event to tracking collections. - [self addEventToTrackingCollections:storedEvent]; - - // Have the prioritizer prioritize the event. - [prioritizer prioritizeEvent:storedEvent]; - - // Check the QoS, if it's high priority, notify the target that it has a high priority event. - if (event.qosTier == GDTCOREventQoSFast) { - [self.uploadCoordinator forceUploadForTarget:target]; - } - - // Write state to disk if we're in the background. - if ([[GDTCORApplication sharedApplication] isRunningInBackground]) { - GDTCORLogDebug("%@", @"Saving storage state because the app is running in the background"); - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSError *error; - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self - requiringSecureCoding:YES - error:&error]; - [data writeToFile:[GDTCORStorage archivePath] atomically:YES]; - } else { -#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH - [NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]]; -#endif - } - } - - // Cancel or end the associated background task if it's still valid. - [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; - bgID = GDTCORBackgroundIdentifierInvalid; - GDTCORLogDebug("Event %@ is stored. There are %ld events stored on disk", event, - (unsigned long)self->_storedEvents.count); - }); -} - -- (void)removeEvents:(NSSet *)events { - NSSet *eventsToRemove = [events copy]; - dispatch_async(_storageQueue, ^{ - for (GDTCORStoredEvent *event in eventsToRemove) { - // Remove from disk, first and foremost. - NSError *error; - if (event.dataFuture.fileURL) { - NSURL *fileURL = event.dataFuture.fileURL; - [[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error]; - GDTCORAssert(error == nil, @"There was an error removing an event file: %@", error); - GDTCORLogDebug("Removed event from disk: %@", fileURL); - } - - // Remove from the tracking collections. - [self.storedEvents removeObject:event]; - [self.targetToEventSet[event.target] removeObject:event]; - } - }); -} - -#pragma mark - Private helper methods - -/** Creates the storage directory if it does not exist. */ -- (void)createEventDirectoryIfNotExists { - NSError *error; - BOOL result = [[NSFileManager defaultManager] createDirectoryAtPath:GDTCORStoragePath() - withIntermediateDirectories:YES - attributes:0 - error:&error]; - if (!result || error) { - GDTCORLogError(GDTCORMCEDirectoryCreationError, @"Error creating the directory: %@", error); - } -} - -/** Saves the event's dataObjectTransportBytes to a file using NSData mechanisms. - * - * @note This method should only be called from a method within a block on _storageQueue to maintain - * thread safety. - * - * @param transportBytes The transport bytes of the event. - * @param eventHash The hash value of the event. - * @return The filename - */ -- (NSURL *)saveEventBytesToDisk:(NSData *)transportBytes - eventHash:(NSUInteger)eventHash - error:(NSError **)error { - NSString *storagePath = GDTCORStoragePath(); - NSString *event = [NSString stringWithFormat:@"event-%lu", (unsigned long)eventHash]; - NSURL *eventFilePath = [NSURL fileURLWithPath:[storagePath stringByAppendingPathComponent:event]]; - - GDTCORAssert(![[NSFileManager defaultManager] fileExistsAtPath:eventFilePath.path], - @"An event shouldn't already exist at this path: %@", eventFilePath.path); - - BOOL writingSuccess = [transportBytes writeToURL:eventFilePath - options:NSDataWritingAtomic - error:error]; - if (!writingSuccess) { - GDTCORLogError(GDTCORMCEFileWriteError, @"An event file could not be written: %@", - eventFilePath); - } - - return eventFilePath; -} - -/** Adds the event to internal tracking collections. - * - * @note This method should only be called from a method within a block on _storageQueue to maintain - * thread safety. - * - * @param event The event to track. - */ -- (void)addEventToTrackingCollections:(GDTCORStoredEvent *)event { - [_storedEvents addObject:event]; - NSMutableSet *events = self.targetToEventSet[event.target]; - events = events ? events : [[NSMutableSet alloc] init]; - [events addObject:event]; - _targetToEventSet[event.target] = events; -} - -#pragma mark - GDTCORLifecycleProtocol - -- (void)appWillForeground:(GDTCORApplication *)app { - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSError *error; - NSData *data = [NSData dataWithContentsOfFile:[GDTCORStorage archivePath]]; - if (data) { - [NSKeyedUnarchiver unarchivedObjectOfClass:[GDTCORStorage class] fromData:data error:&error]; - } - } else { -#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH - [NSKeyedUnarchiver unarchiveObjectWithFile:[GDTCORStorage archivePath]]; -#endif - } -} - -- (void)appWillBackground:(GDTCORApplication *)app { - dispatch_async(_storageQueue, ^{ - // Immediately request a background task to run until the end of the current queue of work, and - // cancel it once the work is done. - __block GDTCORBackgroundIdentifier bgID = - [app beginBackgroundTaskWithName:@"GDTStorage" - expirationHandler:^{ - [app endBackgroundTask:bgID]; - bgID = GDTCORBackgroundIdentifierInvalid; - }]; - - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSError *error; - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self - requiringSecureCoding:YES - error:&error]; - [data writeToFile:[GDTCORStorage archivePath] atomically:YES]; - } else { -#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH - [NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]]; -#endif - } - - // End the background task if it's still valid. - [app endBackgroundTask:bgID]; - bgID = GDTCORBackgroundIdentifierInvalid; - }); -} - -- (void)appWillTerminate:(GDTCORApplication *)application { - dispatch_sync(_storageQueue, ^{ - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSError *error; - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self - requiringSecureCoding:YES - error:&error]; - [data writeToFile:[GDTCORStorage archivePath] atomically:YES]; - } else { -#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH - [NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]]; -#endif - } - }); -} - -#pragma mark - NSSecureCoding - -/** The NSKeyedCoder key for the storedEvents property. */ -static NSString *const kGDTCORStorageStoredEventsKey = @"GDTCORStorageStoredEventsKey"; - -/** The NSKeyedCoder key for the targetToEventSet property. */ -static NSString *const kGDTCORStorageTargetToEventSetKey = @"GDTCORStorageTargetToEventSetKey"; - -/** The NSKeyedCoder key for the uploadCoordinator property. */ -static NSString *const kGDTCORStorageUploadCoordinatorKey = @"GDTCORStorageUploadCoordinatorKey"; - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)aDecoder { - // Create the singleton and populate its ivars. - GDTCORStorage *sharedInstance = [self.class sharedInstance]; - dispatch_sync(sharedInstance.storageQueue, ^{ - NSSet *classes = - [NSSet setWithObjects:[NSMutableOrderedSet class], [GDTCORStoredEvent class], nil]; - sharedInstance->_storedEvents = [aDecoder decodeObjectOfClasses:classes - forKey:kGDTCORStorageStoredEventsKey]; - classes = [NSSet setWithObjects:[NSMutableDictionary class], [NSMutableSet class], - [GDTCORStoredEvent class], nil]; - sharedInstance->_targetToEventSet = - [aDecoder decodeObjectOfClasses:classes forKey:kGDTCORStorageTargetToEventSetKey]; - sharedInstance->_uploadCoordinator = - [aDecoder decodeObjectOfClass:[GDTCORUploadCoordinator class] - forKey:kGDTCORStorageUploadCoordinatorKey]; - }); - return sharedInstance; -} - -- (void)encodeWithCoder:(NSCoder *)aCoder { - GDTCORStorage *sharedInstance = [self.class sharedInstance]; - NSMutableOrderedSet *storedEvents = sharedInstance->_storedEvents; - if (storedEvents) { - [aCoder encodeObject:storedEvents forKey:kGDTCORStorageStoredEventsKey]; - } - NSMutableDictionary *> *targetToEventSet = - sharedInstance->_targetToEventSet; - if (targetToEventSet) { - [aCoder encodeObject:targetToEventSet forKey:kGDTCORStorageTargetToEventSetKey]; - } - GDTCORUploadCoordinator *uploadCoordinator = sharedInstance->_uploadCoordinator; - if (uploadCoordinator) { - [aCoder encodeObject:uploadCoordinator forKey:kGDTCORStorageUploadCoordinatorKey]; - } -} - -@end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m deleted file mode 100644 index a243394..0000000 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2019 Google - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#import - -#import - -#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" - -@implementation GDTCORStoredEvent - -- (instancetype)initWithEvent:(GDTCOREvent *)event - dataFuture:(nonnull GDTCORDataFuture *)dataFuture { - self = [super init]; - if (self) { - _dataFuture = dataFuture; - _mappingID = event.mappingID; - _target = @(event.target); - _qosTier = event.qosTier; - _clockSnapshot = event.clockSnapshot; - _customPrioritizationParams = event.customPrioritizationParams; - } - return self; -} - -#pragma mark - NSSecureCoding - -/** Coding key for the dataFuture ivar. */ -static NSString *kDataFutureKey = @"GDTCORStoredEventDataFutureKey"; - -/** Coding key for mappingID ivar. */ -static NSString *kMappingIDKey = @"GDTCORStoredEventMappingIDKey"; - -/** Coding key for target ivar. */ -static NSString *kTargetKey = @"GDTCORStoredEventTargetKey"; - -/** Coding key for qosTier ivar. */ -static NSString *kQosTierKey = @"GDTCORStoredEventQosTierKey"; - -/** Coding key for clockSnapshot ivar. */ -static NSString *kClockSnapshotKey = @"GDTCORStoredEventClockSnapshotKey"; - -/** Coding key for customPrioritizationParams ivar. */ -static NSString *kCustomPrioritizationParamsKey = @"GDTCORStoredEventcustomPrioritizationParamsKey"; - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (void)encodeWithCoder:(nonnull NSCoder *)aCoder { - [aCoder encodeObject:_dataFuture forKey:kDataFutureKey]; - [aCoder encodeObject:_mappingID forKey:kMappingIDKey]; - [aCoder encodeObject:_target forKey:kTargetKey]; - [aCoder encodeObject:@(_qosTier) forKey:kQosTierKey]; - [aCoder encodeObject:_clockSnapshot forKey:kClockSnapshotKey]; - [aCoder encodeObject:_customPrioritizationParams forKey:kCustomPrioritizationParamsKey]; -} - -- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { - self = [self init]; - if (self) { - _dataFuture = [aDecoder decodeObjectOfClass:[GDTCORDataFuture class] forKey:kDataFutureKey]; - _mappingID = [aDecoder decodeObjectOfClass:[NSString class] forKey:kMappingIDKey]; - _target = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:kTargetKey]; - NSNumber *qosTier = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:kQosTierKey]; - _qosTier = [qosTier intValue]; - _clockSnapshot = [aDecoder decodeObjectOfClass:[GDTCORClock class] forKey:kClockSnapshotKey]; - _customPrioritizationParams = [aDecoder decodeObjectOfClass:[NSDictionary class] - forKey:kCustomPrioritizationParamsKey]; - } - return self; -} - -- (BOOL)isEqual:(GDTCORStoredEvent *)other { - return [self hash] == [other hash]; -} - -- (NSUInteger)hash { - return [_dataFuture hash] ^ [_mappingID hash] ^ [_target hash] ^ [_clockSnapshot hash] ^ _qosTier; -} - -@end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m index a794cf3..35f456e 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m @@ -22,8 +22,10 @@ #import #import #import +#import -#import "GDTCORLibrary/Private/GDTCORStorage.h" +#import "GDTCORLibrary/Private/GDTCOREvent_Private.h" +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" @implementation GDTCORTransformer @@ -41,15 +43,15 @@ - (instancetype)init { if (self) { _eventWritingQueue = dispatch_queue_create("com.google.GDTCORTransformer", DISPATCH_QUEUE_SERIAL); - _storageInstance = [GDTCORStorage sharedInstance]; } return self; } - (void)transformEvent:(GDTCOREvent *)event withTransformers:(NSArray> *)transformers - onComplete:(nonnull void (^)(BOOL wasWritten, NSError *error))completion { + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion { GDTCORAssert(event, @"You can't write a nil event"); + BOOL hadOriginalCompletion = completion != nil; if (!completion) { completion = ^(BOOL wasWritten, NSError *_Nullable error) { }; @@ -66,7 +68,7 @@ - (void)transformEvent:(GDTCOREvent *)event GDTCOREvent *transformedEvent = event; for (id transformer in transformers) { if ([transformer respondsToSelector:@selector(transform:)]) { - GDTCORLogDebug("Applying a transformer to event %@", event); + GDTCORLogDebug(@"Applying a transformer to event %@", event); transformedEvent = [transformer transform:transformedEvent]; if (!transformedEvent) { completion(NO, nil); @@ -79,7 +81,11 @@ - (void)transformEvent:(GDTCOREvent *)event return; } } - [self.storageInstance storeEvent:transformedEvent onComplete:completion]; + + id storage = + [GDTCORRegistrar sharedInstance].targetToStorage[@(event.target)]; + + [storage storeEvent:transformedEvent onComplete:hadOriginalCompletion ? completion : nil]; // The work is done, cancel the background task if it's valid. [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m index c63c262..6c6af23 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import +#import "GDTCORLibrary/Public/GDTCORTransport.h" #import "GDTCORLibrary/Private/GDTCORTransport_Private.h" #import @@ -41,45 +41,30 @@ - (nullable instancetype)initWithMappingID:(NSString *)mappingID _target = target; _transformerInstance = [GDTCORTransformer sharedInstance]; } - GDTCORLogDebug("Transport object created. mappingID:%@ transformers:%@ target:%ld", _mappingID, - _transformers, (long)_target); + GDTCORLogDebug(@"Transport object created. mappingID:%@ transformers:%@ target:%ld", mappingID, + transformers, (long)target); return self; } - (void)sendTelemetryEvent:(GDTCOREvent *)event - onComplete:(void (^)(BOOL wasWritten, NSError *_Nullable error))completion { + onComplete: + (void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion { event.qosTier = GDTCOREventQoSTelemetry; - [self sendEvent:event - onComplete:^(BOOL wasWritten, NSError *error) { - GDTCORLogDebug("Telemetry event sent: %@", event); - if (completion) { - completion(wasWritten, nil); - } - }]; + [self sendEvent:event onComplete:completion]; } - (void)sendDataEvent:(GDTCOREvent *)event - onComplete:(void (^)(BOOL wasWritten, NSError *_Nullable error))completion { + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion { GDTCORAssert(event.qosTier != GDTCOREventQoSTelemetry, @"Use -sendTelemetryEvent, please."); - [self sendEvent:event - onComplete:^(BOOL wasWritten, NSError *error) { - GDTCORLogDebug("Data event sent: %@", event); - if (completion) { - completion(wasWritten, nil); - } - }]; + [self sendEvent:event onComplete:completion]; } - (void)sendTelemetryEvent:(GDTCOREvent *)event { - [self sendTelemetryEvent:event - onComplete:^(BOOL wasWritten, NSError *_Nullable error){ - }]; + [self sendTelemetryEvent:event onComplete:nil]; } - (void)sendDataEvent:(GDTCOREvent *)event { - [self sendDataEvent:event - onComplete:^(BOOL wasWritten, NSError *_Nullable error){ - }]; + [self sendDataEvent:event onComplete:nil]; } - (GDTCOREvent *)eventForTransport { @@ -94,7 +79,7 @@ - (GDTCOREvent *)eventForTransport { * @param completion A block that will be called when the event has been written or dropped. */ - (void)sendEvent:(GDTCOREvent *)event - onComplete:(void (^)(BOOL wasWritten, NSError *error))completion { + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion { // TODO: Determine if sending an event before registration is allowed. GDTCORAssert(event, @"You can't send a nil event"); GDTCOREvent *copiedEvent = [event copy]; diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m index 7ebef6b..c712e5e 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m @@ -19,10 +19,9 @@ #import #import #import +#import -#import "GDTCORLibrary/Private/GDTCORReachability.h" #import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" -#import "GDTCORLibrary/Private/GDTCORStorage.h" @implementation GDTCORUploadCoordinator @@ -51,31 +50,20 @@ - (instancetype)init { - (void)forceUploadForTarget:(GDTCORTarget)target { dispatch_async(_coordinationQueue, ^{ - GDTCORLogDebug("Forcing an upload of target %ld", (long)target); + GDTCORLogDebug(@"Forcing an upload of target %ld", (long)target); GDTCORUploadConditions conditions = [self uploadConditions]; conditions |= GDTCORUploadConditionHighPriority; [self uploadTargets:@[ @(target) ] conditions:conditions]; }); } -#pragma mark - Property overrides - -// GDTCORStorage and GDTCORUploadCoordinator +sharedInstance methods call each other, so this breaks -// the loop. -- (GDTCORStorage *)storage { - if (!_storage) { - _storage = [GDTCORStorage sharedInstance]; - } - return _storage; -} - #pragma mark - Private helper methods /** Starts a timer that checks whether or not events can be uploaded at regular intervals. It will * check the next-upload clocks of all targets to determine if an upload attempt can be made. */ - (void)startTimer { - dispatch_sync(_coordinationQueue, ^{ + dispatch_async(_coordinationQueue, ^{ self->_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, self->_coordinationQueue); dispatch_source_set_timer(self->_timer, DISPATCH_TIME_NOW, self->_timerInterval, @@ -83,11 +71,11 @@ - (void)startTimer { dispatch_source_set_event_handler(self->_timer, ^{ if (![[GDTCORApplication sharedApplication] isRunningInBackground]) { GDTCORUploadConditions conditions = [self uploadConditions]; - GDTCORLogDebug("%@", @"Upload timer fired"); + GDTCORLogDebug(@"%@", @"Upload timer fired"); [self uploadTargets:[self.registrar.targetToUploader allKeys] conditions:conditions]; } }); - GDTCORLogDebug("%@", @"Upload timer started"); + GDTCORLogDebug(@"%@", @"Upload timer started"); dispatch_resume(self->_timer); }); } @@ -112,7 +100,7 @@ - (void)uploadTargets:(NSArray *)targets conditions:(GDTCORUploadCon for (NSNumber *target in targets) { // Don't trigger uploads for targets that have an in-flight package already. if (self->_targetToInFlightPackages[target]) { - GDTCORLogDebug("Target %@ will not upload, there's an upload in flight", target); + GDTCORLogDebug(@"Target %@ will not upload, there's an upload in flight", target); continue; } // Ask the uploader if they can upload and do so, if it can. @@ -123,44 +111,45 @@ - (void)uploadTargets:(NSArray *)targets conditions:(GDTCORUploadCon conditions:conditions]; if (package.events.count) { self->_targetToInFlightPackages[target] = package; - GDTCORLogDebug("Package of %ld events is being handed over to an uploader", + GDTCORLogDebug(@"Package of %ld events is being handed over to an uploader", (long)package.events.count); [uploader uploadPackage:package]; } else { [package completeDelivery]; } } - GDTCORLogDebug("Target %@ is not ready to upload", target); + GDTCORLogDebug(@"Target %@ is not ready to upload", target); } }); } +/** Returns the registered storage for the given NSNumber wrapped GDTCORTarget. + * + * @param target The NSNumber wrapping of a GDTCORTarget to find the storage instance of. + * @return The storage instance for the given target. + */ +- (nullable id)storageForTarget:(NSNumber *)target { + id storage = [GDTCORRegistrar sharedInstance].targetToStorage[target]; + GDTCORAssert(storage, @"A storage must be registered for target %@", target); + return storage; +} + /** Returns the current upload conditions after making determinations about the network connection. * * @return The current upload conditions. */ - (GDTCORUploadConditions)uploadConditions { -#if TARGET_OS_WATCH - return GDTCORUploadConditionNoNetwork; -#else - SCNetworkReachabilityFlags currentFlags = [GDTCORReachability currentFlags]; - BOOL reachable = - (currentFlags & kSCNetworkReachabilityFlagsReachable) == kSCNetworkReachabilityFlagsReachable; - BOOL connectionRequired = (currentFlags & kSCNetworkReachabilityFlagsConnectionRequired) == - kSCNetworkReachabilityFlagsConnectionRequired; - BOOL networkConnected = reachable && !connectionRequired; - + GDTCORNetworkReachabilityFlags currentFlags = [GDTCORReachability currentFlags]; + BOOL networkConnected = GDTCORReachabilityFlagsReachable(currentFlags); if (!networkConnected) { return GDTCORUploadConditionNoNetwork; } - BOOL isWWAN = GDTCORReachabilityFlagsContainWWAN(currentFlags); if (isWWAN) { return GDTCORUploadConditionMobileData; } else { return GDTCORUploadConditionWifiData; } -#endif } #pragma mark - NSSecureCoding support @@ -177,9 +166,10 @@ - (instancetype)initWithCoder:(NSCoder *)aDecoder { GDTCORUploadCoordinator *sharedCoordinator = [GDTCORUploadCoordinator sharedInstance]; dispatch_sync(sharedCoordinator->_coordinationQueue, ^{ @try { + NSSet *classes = + [NSSet setWithObjects:[NSMutableDictionary class], [GDTCORUploadPackage class], nil]; sharedCoordinator->_targetToInFlightPackages = - [aDecoder decodeObjectOfClass:[NSMutableDictionary class] - forKey:ktargetToInFlightPackagesKey]; + [aDecoder decodeObjectOfClasses:classes forKey:ktargetToInFlightPackagesKey]; } @catch (NSException *exception) { sharedCoordinator->_targetToInFlightPackages = [NSMutableDictionary dictionary]; @@ -201,13 +191,14 @@ - (void)encodeWithCoder:(NSCoder *)aCoder { #pragma mark - GDTCORLifecycleProtocol - (void)appWillForeground:(GDTCORApplication *)app { - // Not entirely thread-safe, but it should be fine. + // -startTimer is thread-safe. [self startTimer]; } - (void)appWillBackground:(GDTCORApplication *)app { - // Should be thread-safe. If it ends up not being, put this in a dispatch_sync. - [self stopTimer]; + dispatch_async(_coordinationQueue, ^{ + [self stopTimer]; + }); } - (void)appWillTerminate:(GDTCORApplication *)application { @@ -230,6 +221,7 @@ - (void)packageDelivered:(GDTCORUploadPackage *)package successful:(BOOL)success if (targetToInFlightPackages) { [targetToInFlightPackages removeObjectForKey:targetNumber]; } + NSSet *packageEvents = [package.events copy]; if (registrar) { id prioritizer = registrar.targetToPrioritizer[targetNumber]; if (!prioritizer) { @@ -237,11 +229,20 @@ - (void)packageDelivered:(GDTCORUploadPackage *)package successful:(BOOL)success @"A prioritizer should be registered for this target: %@", targetNumber); } if ([prioritizer respondsToSelector:@selector(packageDelivered:successful:)]) { - [prioritizer packageDelivered:package successful:successful]; + [prioritizer packageDelivered:[package copy] successful:successful]; } } - if (package.events != nil) { - [self.storage removeEvents:package.events]; + if (successful && packageEvents.count) { + NSMutableSet *eventIDs = [[NSMutableSet alloc] init]; + for (GDTCOREvent *event in packageEvents) { + NSNumber *eventID = event.eventID; + if (eventID != nil) { + [eventIDs addObject:eventID]; + } else { + GDTCORLogDebug(@"An event was missing its ID: %@", event); + } + } + [[self storageForTarget:@(package.target)] removeEvents:eventIDs]; } }); } diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m index 6ac5f4f..38b7a7c 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m @@ -14,16 +14,39 @@ * limitations under the License. */ -#import +#import "GDTCORLibrary/Public/GDTCORUploadPackage.h" #import #import -#import -#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" #import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" #import "GDTCORLibrary/Private/GDTCORUploadPackage_Private.h" +/** A class that holds a weak reference to an upload package, for use by the package's NSTimer. */ +@interface GDTCORUploadPackageTimerHolder : NSObject + +/** The upload package. */ +@property(weak, nonatomic) GDTCORUploadPackage *package; + +@end + +@implementation GDTCORUploadPackageTimerHolder + +/** Calls checkIfPackageIsExpired on the package if non-nil. Invalidates if the package is nil. + * + * @param timer The timer instance calling this method. + */ +- (void)timerFired:(NSTimer *)timer { + if (_package) { + [_package checkIfPackageIsExpired]; + } else { + [timer invalidate]; + } +} + +@end + @implementation GDTCORUploadPackage { /** If YES, the package's -completeDelivery method has been called. */ BOOL _isDelivered; @@ -39,23 +62,36 @@ - (instancetype)initWithTarget:(GDTCORTarget)target { self = [super init]; if (self) { _target = target; - _storage = [GDTCORStorage sharedInstance]; + _storage = [GDTCORRegistrar sharedInstance].targetToStorage[@(target)]; _deliverByTime = [GDTCORClock clockSnapshotInTheFuture:180000]; _handler = [GDTCORUploadCoordinator sharedInstance]; + GDTCORUploadPackageTimerHolder *holder = [[GDTCORUploadPackageTimerHolder alloc] init]; + holder.package = self; _expirationTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 - target:self - selector:@selector(checkIfPackageIsExpired:) + target:holder + selector:@selector(timerFired:) userInfo:nil repeats:YES]; } - GDTCORLogDebug("Upload package created %@", self); + GDTCORLogDebug(@"Upload package created %@", self); return self; } - (instancetype)copy { - GDTCORUploadPackage *newPackage = [[GDTCORUploadPackage alloc] initWithTarget:_target]; + GDTCORUploadPackage *newPackage = [[GDTCORUploadPackage alloc] init]; + newPackage->_target = _target; + newPackage->_storage = _storage; + newPackage->_deliverByTime = _deliverByTime; + newPackage->_handler = _handler; + GDTCORUploadPackageTimerHolder *holder = [[GDTCORUploadPackageTimerHolder alloc] init]; + holder.package = newPackage; + newPackage->_expirationTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 + target:holder + selector:@selector(timerFired:) + userInfo:nil + repeats:YES]; newPackage->_events = [_events copy]; - GDTCORLogDebug("Copying UploadPackage %@ to %@", self, newPackage); + GDTCORLogDebug(@"Copying UploadPackage %@ to %@", self, newPackage); return newPackage; } @@ -71,43 +107,37 @@ - (void)dealloc { [_expirationTimer invalidate]; } -- (void)setStorage:(GDTCORStorage *)storage { - if (storage != _storage) { - _storage = storage; - } -} - - (void)completeDelivery { if (_isDelivered) { GDTCORLogError(GDTCORMCEDeliverTwice, @"%@", @"It's an API violation to call -completeDelivery twice."); } _isDelivered = YES; + [_expirationTimer invalidate]; if (!_isHandled && _handler && [_handler respondsToSelector:@selector(packageDelivered:successful:)]) { - [_expirationTimer invalidate]; _isHandled = YES; - [_handler packageDelivered:self successful:YES]; + [_handler packageDelivered:[self copy] successful:YES]; } - GDTCORLogDebug("Upload package delivered: %@", self); + GDTCORLogDebug(@"Upload package delivered: %@", self); } - (void)retryDeliveryInTheFuture { + [_expirationTimer invalidate]; if (!_isHandled && _handler && [_handler respondsToSelector:@selector(packageDelivered:successful:)]) { - [_expirationTimer invalidate]; _isHandled = YES; - [_handler packageDelivered:self successful:NO]; + [_handler packageDelivered:[self copy] successful:NO]; } - GDTCORLogDebug("Upload package will retry in the future: %@", self); + GDTCORLogDebug(@"Upload package will retry in the future: %@", self); } -- (void)checkIfPackageIsExpired:(NSTimer *)timer { +- (void)checkIfPackageIsExpired { if ([[GDTCORClock snapshot] isAfter:_deliverByTime]) { + [_expirationTimer invalidate]; if (_handler && [_handler respondsToSelector:@selector(packageExpired:)]) { _isHandled = YES; - [_expirationTimer invalidate]; - GDTCORLogDebug("Upload package expired: %@", self); + GDTCORLogDebug(@"Upload package expired: %@", self); [_handler packageExpired:self]; } } @@ -143,10 +173,14 @@ - (void)encodeWithCoder:(nonnull NSCoder *)aCoder { } - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { + // Sets a global translation mapping to decode GDTCORStoredEvent objects encoded as instances of + // GDTCOREvent instead. + [NSKeyedUnarchiver setClass:[GDTCOREvent class] forClassName:@"GDTCORStoredEvent"]; + GDTCORTarget target = [aDecoder decodeIntegerForKey:kTargetKey]; self = [self initWithTarget:target]; if (self) { - NSSet *classes = [NSSet setWithObjects:[NSSet class], [GDTCORStoredEvent class], nil]; + NSSet *classes = [NSSet setWithObjects:[NSSet class], [GDTCOREvent class], nil]; _events = [aDecoder decodeObjectOfClasses:classes forKey:kEventsKey]; _deliverByTime = [aDecoder decodeObjectOfClass:[GDTCORClock class] forKey:kDeliverByTimeKey]; _isHandled = [aDecoder decodeBoolForKey:kIsHandledKey]; diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORDataFuture.h similarity index 81% rename from Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h rename to Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORDataFuture.h index 07f428f..685cf2b 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORDataFuture.h @@ -21,15 +21,9 @@ NS_ASSUME_NONNULL_BEGIN /** This class represents a future data object, determined at instantiation time. */ @interface GDTCORDataFuture : NSObject -/** The data, computed on-demand, depending on the initializer. */ -@property(nullable, readonly, nonatomic) NSData *data; - /** If not nil, this data future was instantiated with this file URL. */ @property(nullable, readonly, nonatomic) NSURL *fileURL; -/** If not nil, this data future was instantiated with this NSData instance. */ -@property(nullable, readonly, nonatomic) NSData *originalData; - /** Initializes an instance with the given the fileURL. * * @param fileURL The fileURL containing the data to return in -data. diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h index f7f8a28..485d6bb 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h @@ -22,8 +22,26 @@ NS_ASSUME_NONNULL_BEGIN @interface GDTCOREvent () -/** The serialized bytes of the event data object. */ -@property(nonatomic) NSData *dataObjectTransportBytes; +/** The unique ID of the event. This property is for testing only. */ +@property(nonatomic, readwrite) NSNumber *eventID; + +/** The GDT relative file path of the event. */ +@property(nullable, nonatomic, readonly) NSString *GDTFilePath; + +/** Writes [dataObject transportBytes] to the given URL, populates fileURL with the filename, then + * nils the dataObject property. This method should not be called twice on the same event. + * + * @param filePath The GDTCORRootDirectory-relative path that dataObject will be written to. + * @param error If populated, the error encountered during writing to disk. + * @return YES if writing dataObject to disk was successful, NO otherwise. + */ +- (BOOL)writeToGDTPath:(NSString *)filePath error:(NSError **)error; + +/** Generates incrementing event IDs, stored in a file in the app's cache. + * + * @return An event ID that is incremented based on a number in a file stored in the app cache. + */ ++ (NSNumber *)nextEventID; @end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h similarity index 66% rename from Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h rename to Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h index 24569fd..837c3ea 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h @@ -14,27 +14,39 @@ * limitations under the License. */ -#import "GDTCORLibrary/Private/GDTCORStorage.h" +#import +#import +#import + +@class GDTCOREvent; @class GDTCORUploadCoordinator; NS_ASSUME_NONNULL_BEGIN -@interface GDTCORStorage () +/** Manages the storage of events. This class is thread-safe. */ +@interface GDTCORFlatFileStorage + : NSObject /** The queue on which all storage work will occur. */ @property(nonatomic) dispatch_queue_t storageQueue; /** A map of targets to a set of stored events. */ @property(nonatomic) - NSMutableDictionary *> *targetToEventSet; + NSMutableDictionary *> *targetToEventSet; /** All the events that have been stored. */ -@property(readonly, nonatomic) NSMutableOrderedSet *storedEvents; +@property(readonly, nonatomic) NSMutableDictionary *storedEvents; /** The upload coordinator instance used by this storage instance. */ @property(nonatomic) GDTCORUploadCoordinator *uploadCoordinator; +/** Creates and/or returns the storage singleton. + * + * @return The storage singleton. + */ ++ (instancetype)sharedInstance; + /** Returns the path to the keyed archive of the singleton. This is where the singleton is saved * to disk during certain app lifecycle events. * diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h index 5d3ddaf..c5ca191 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h @@ -14,14 +14,12 @@ * limitations under the License. */ -#import "GDTCORLibrary/Private/GDTCORReachability.h" +#import "GDTCORLibrary/Public/GDTCORReachability.h" @interface GDTCORReachability () -#if !TARGET_OS_WATCH /** Allows manually setting the flags for testing purposes. */ -@property(nonatomic, readwrite) SCNetworkReachabilityFlags flags; -#endif +@property(nonatomic, readwrite) GDTCORNetworkReachabilityFlags flags; /** Creates/returns the singleton instance of this class. * diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h index 074fc11..8b29839 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h @@ -30,6 +30,10 @@ NS_ASSUME_NONNULL_BEGIN @property(atomic, readonly) NSMutableDictionary> *targetToPrioritizer; +/** A map of targets to storage instances. */ +@property(atomic, readonly) + NSMutableDictionary> *targetToStorage; + @end NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h deleted file mode 100644 index bbb3778..0000000 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2018 Google - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#import - -#import - -@class GDTCOREvent; -@class GDTCORStoredEvent; - -NS_ASSUME_NONNULL_BEGIN - -/** Manages the storage of events. This class is thread-safe. */ -@interface GDTCORStorage : NSObject - -/** Creates and/or returns the storage singleton. - * - * @return The storage singleton. - */ -+ (instancetype)sharedInstance; - -/** Stores event.dataObjectTransportBytes into a shared on-device folder and tracks the event via - * a GDTCORStoredEvent instance. - * - * @param event The event to store. - * @param completion A block to run when an event was written to disk or dropped. - */ -- (void)storeEvent:(GDTCOREvent *)event - onComplete:(void (^)(BOOL wasWritten, NSError *error))completion; - -/** Removes a set of events from storage specified by their hash. - * - * @param events The set of stored events to remove. - */ -- (void)removeEvents:(NSSet *)events; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h index 9da9fc3..e2dbff1 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h @@ -49,7 +49,7 @@ NS_ASSUME_NONNULL_BEGIN */ - (void)transformEvent:(GDTCOREvent *)event withTransformers:(nullable NSArray> *)transformers - onComplete:(void (^)(BOOL wasWritten, NSError *_Nullable error))completion; + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion; @end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h index fcdae34..4adcf93 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h @@ -16,8 +16,6 @@ #import "GDTCORLibrary/Private/GDTCORTransformer.h" -@class GDTCORStorage; - NS_ASSUME_NONNULL_BEGIN @interface GDTCORTransformer () @@ -25,9 +23,6 @@ NS_ASSUME_NONNULL_BEGIN /** The queue on which all work will occur. */ @property(nonatomic) dispatch_queue_t eventWritingQueue; -/** The storage instance used to store events. Should only be used to inject a testing fake. */ -@property(nonatomic) GDTCORStorage *storageInstance; - @end NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h index b1d708c..b678ef2 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h @@ -22,7 +22,6 @@ #import "GDTCORLibrary/Private/GDTCORUploadPackage_Private.h" @class GDTCORClock; -@class GDTCORStorage; NS_ASSUME_NONNULL_BEGIN @@ -38,6 +37,8 @@ NS_ASSUME_NONNULL_BEGIN * @return The singleton instance of this class. */ + (instancetype)sharedInstance; + +/** The queue on which all upload coordination will occur. */ @property(nonatomic, readonly) dispatch_queue_t coordinationQueue; /** A timer that will causes regular checks for events to upload. */ @@ -53,9 +54,6 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly) NSMutableDictionary *targetToInFlightPackages; -/** The storage object the coordinator will use. Generally used for testing. */ -@property(nonatomic) GDTCORStorage *storage; - /** The registrar object the coordinator will use. Generally used for testing. */ @property(nonatomic) GDTCORRegistrar *registrar; diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h index 1eb58d4..1ab6432 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h @@ -16,14 +16,15 @@ #import -@class GDTCORStorage; - @interface GDTCORUploadPackage () /** The storage object this upload package will use to resolve event hashes to files. */ -@property(nonatomic) GDTCORStorage *storage; +@property(nonatomic) id storage; /** A handler that will receive callbacks for certain events. */ @property(nonatomic) id handler; +/** Checks if the package is expired and calls -packageExpired: on the handler if necessary. */ +- (void)checkIfPackageIsExpired; + @end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h index 5dfe192..c0f9712 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h @@ -18,6 +18,8 @@ #import +NS_ASSUME_NONNULL_BEGIN + /** A block type that could be run instead of normal assertion logging. No return type, no params. */ typedef void (^GDTCORAssertionBlock)(void); @@ -46,21 +48,20 @@ FOUNDATION_EXPORT GDTCORAssertionBlock _Nullable GDTCORAssertionBlockToRunInstea * * @param condition The condition you'd expect to be YES. */ -#define GDTCORAssert(condition, ...) \ - do { \ - if (__builtin_expect(!(condition), 0)) { \ - GDTCORAssertionBlock assertionBlock = GDTCORAssertionBlockToRunInstead(); \ - if (assertionBlock) { \ - assertionBlock(); \ - } else { \ - __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ - NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ - __assert_file__ = __assert_file__ ? __assert_file__ : @""; \ - GDTCORLogError(GDTCORMCEGeneralError, @"Assertion failed (%@:%d): %@,", __assert_file__, \ - __LINE__, ##__VA_ARGS__); \ - __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \ - } \ - } \ +#define GDTCORAssert(condition, format, ...) \ + do { \ + __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ + if (__builtin_expect(!(condition), 0)) { \ + GDTCORAssertionBlock assertionBlock = GDTCORAssertionBlockToRunInstead(); \ + if (assertionBlock) { \ + assertionBlock(); \ + } else { \ + NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ + __assert_file__ = __assert_file__ ? __assert_file__ : @""; \ + GDTCORLogAssert(NO, __assert_file__, __LINE__, format, ##__VA_ARGS__); \ + __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \ + } \ + } \ } while (0); /** Asserts by logging to the console and throwing an exception if NS_BLOCK_ASSERTIONS is not @@ -68,24 +69,27 @@ FOUNDATION_EXPORT GDTCORAssertionBlock _Nullable GDTCORAssertionBlockToRunInstea * * @param condition The condition you'd expect to be YES. */ -#define GDTCORFatalAssert(condition, ...) \ - do { \ - __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ - if (__builtin_expect(!(condition), 0)) { \ - NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ - __assert_file__ = __assert_file__ ? __assert_file__ : @""; \ - GDTCORLogError(GDTCORMCEFatalAssertion, \ - @"Fatal assertion encountered, please open an issue at " \ - "https://github.com/firebase/firebase-ios-sdk/issues " \ - "(%@:%d): %@,", \ - __assert_file__, __LINE__, ##__VA_ARGS__); \ - [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd \ - object:self \ - file:__assert_file__ \ - lineNumber:__LINE__ \ - description:@"%@", ##__VA_ARGS__]; \ - } \ - __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \ +#define GDTCORFatalAssert(condition, format, ...) \ + do { \ + __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ + if (__builtin_expect(!(condition), 0)) { \ + GDTCORAssertionBlock assertionBlock = GDTCORAssertionBlockToRunInstead(); \ + if (assertionBlock) { \ + assertionBlock(); \ + } else { \ + NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ + __assert_file__ = __assert_file__ ? __assert_file__ : @""; \ + GDTCORLogAssert(YES, __assert_file__, __LINE__, format, ##__VA_ARGS__); \ + [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd \ + object:self \ + file:__assert_file__ \ + lineNumber:__LINE__ \ + description:format, ##__VA_ARGS__]; \ + __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \ + } \ + } \ } while (0); #endif // defined(NS_BLOCK_ASSERTIONS) + +NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h index c70706b..d306f18 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h @@ -16,18 +16,40 @@ #import -// Set this to 1 to have the library print out as much as possible about what GDT is doing. -#define GDT_VERBOSE_LOGGING 0 +/** The current logging level. This value and higher will be printed. Declared as volatile to make + * getting and setting atomic. + */ +FOUNDATION_EXPORT volatile NSInteger GDTCORConsoleLoggerLoggingLevel; + +/** A list of logging levels that GDT supports. */ +typedef NS_ENUM(NSInteger, GDTCORLoggingLevel) { + + /** Causes all logs to be printed. */ + GDTCORLoggingLevelDebug = 1, + + /** Causes all non-debug logs to be printed. */ + GDTCORLoggingLevelVerbose = 2, + + /** Causes warnings and errors to be printed. */ + GDTCORLoggingLevelWarnings = 3, + + /** Causes errors to be printed. This is the default value. */ + GDTCORLoggingLevelErrors = 4 +}; /** A list of message codes to print in the logger that help to correspond printed messages with * code locations. * * Prefixes: + * - MCD => MessageCodeDebug * - MCW => MessageCodeWarning * - MCE => MessageCodeError */ typedef NS_ENUM(NSInteger, GDTCORMessageCode) { + /** For debug logs. */ + GDTCORMCDDebugLog = 0, + /** For warning messages concerning transportBytes: not being implemented by a data object. */ GDTCORMCWDataObjectMissingBytesImpl = 1, @@ -40,6 +62,12 @@ typedef NS_ENUM(NSInteger, GDTCORMessageCode) { /** For warning messages concerning a failed reachability call. */ GDTCORMCWReachabilityFailed = 4, + /** For warning messages concerning a database warning. */ + GDTCORMCWDatabaseWarning = 5, + + /** For warning messages concerning the reading of a event file. */ + GDTCORMCWFileReadError = 6, + /** For error messages concerning transform: not being implemented by an event transformer. */ GDTCORMCETransformerDoesntImplementTransform = 1000, @@ -64,12 +92,37 @@ typedef NS_ENUM(NSInteger, GDTCORMessageCode) { /** For fatal errors. Please go to https://github.com/firebase/firebase-ios-sdk/issues and open * an issue if you encounter an error with this code. */ - GDTCORMCEFatalAssertion = 1007 + GDTCORMCEFatalAssertion = 1007, + + /** For error messages concerning the reading of a event file. */ + GDTCORMCEFileReadError = 1008, + + /** For errors related to running sqlite. */ + GDTCORMCEDatabaseError = 1009, }; -/** */ +/** Prints the given code and format string to the console. + * + * @param code The message code describing the nature of the log. + * @param logLevel The log level of this log. + * @param format The format string. + */ FOUNDATION_EXPORT -void GDTCORLog(GDTCORMessageCode code, NSString *_Nonnull format, ...); +void GDTCORLog(GDTCORMessageCode code, GDTCORLoggingLevel logLevel, NSString *_Nonnull format, ...) + NS_FORMAT_FUNCTION(3, 4); + +/** Prints an assert log to the console. + * + * @param wasFatal Send YES if the assertion should be fatal, NO otherwise. + * @param file The file in which the failure occurred. + * @param line The line number of the failure. + * @param format The format string. + */ +FOUNDATION_EXPORT void GDTCORLogAssert(BOOL wasFatal, + NSString *_Nonnull file, + NSInteger line, + NSString *_Nullable format, + ...) NS_FORMAT_FUNCTION(4, 5); /** Returns the string that represents some message code. * @@ -78,17 +131,13 @@ void GDTCORLog(GDTCORMessageCode code, NSString *_Nonnull format, ...); */ FOUNDATION_EXPORT NSString *_Nonnull GDTCORMessageCodeEnumToString(GDTCORMessageCode code); +#define GDTCORLogDebug(MESSAGE_FORMAT, ...) \ + GDTCORLog(GDTCORMCDDebugLog, GDTCORLoggingLevelDebug, MESSAGE_FORMAT, __VA_ARGS__); + // A define to wrap GULLogWarning with slightly more convenient usage. #define GDTCORLogWarning(MESSAGE_CODE, MESSAGE_FORMAT, ...) \ - GDTCORLog(MESSAGE_CODE, MESSAGE_FORMAT, __VA_ARGS__); + GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelWarnings, MESSAGE_FORMAT, __VA_ARGS__); // A define to wrap GULLogError with slightly more convenient usage and a failing assert. #define GDTCORLogError(MESSAGE_CODE, MESSAGE_FORMAT, ...) \ - GDTCORLog(MESSAGE_CODE, MESSAGE_FORMAT, __VA_ARGS__); - -// A define to wrap NSLog for verbose console logs only useful for local debugging. -#if GDT_VERBOSE_LOGGING == 1 -#define GDTCORLogDebug(FORMAT, ...) NSLog(@"GDT: " FORMAT, __VA_ARGS__); -#else -#define GDTCORLogDebug(...) -#endif // GDT_VERBOSE_LOGGING == 1 + GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelErrors, MESSAGE_FORMAT, __VA_ARGS__); diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h index 1ab55de..4d6ffce 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h @@ -19,8 +19,6 @@ #import @class GDTCORClock; -@class GDTCORDataFuture; -@class GDTCORStoredEvent; NS_ASSUME_NONNULL_BEGIN @@ -47,6 +45,9 @@ typedef NS_ENUM(NSInteger, GDTCOREventQoS) { @interface GDTCOREvent : NSObject +/** The unique ID of the event. */ +@property(nonatomic, readonly) NSNumber *eventID; + /** The mapping identifier, to allow backends to map the transport bytes to a proto. */ @property(readonly, nonatomic) NSString *mappingID; @@ -63,12 +64,13 @@ typedef NS_ENUM(NSInteger, GDTCOREventQoS) { /** The clock snapshot at the time of the event. */ @property(nonatomic) GDTCORClock *clockSnapshot; -/** A dictionary provided to aid prioritizers by allowing the passing of arbitrary data. It will be - * retained by a copy in -copy, but not used for -hash. - * - * @note Ensure that classes contained therein implement NSSecureCoding to prevent loss of data. +/** The resulting file URL when [dataObject -transportBytes] has been saved to disk.*/ +@property(nullable, readonly, nonatomic) NSURL *fileURL; + +/** Bytes that can be used by a prioritizer or uploader later on. It's the prioritizer or uploader's + * responsibility to serialize and deserialize these bytes. */ -@property(nullable, nonatomic) NSDictionary *customPrioritizationParams; +@property(nullable, nonatomic) NSData *customBytes; // Please use the designated initializer. - (instancetype)init NS_UNAVAILABLE; @@ -82,13 +84,6 @@ typedef NS_ENUM(NSInteger, GDTCOREventQoS) { - (nullable instancetype)initWithMappingID:(NSString *)mappingID target:(NSInteger)target NS_DESIGNATED_INITIALIZER; -/** Returns the GDTCORStoredEvent equivalent of self. - * - * @param dataFuture The data future representing the transport bytes of the original event. - * @return An equivalent GDTCORStoredEvent. - */ -- (GDTCORStoredEvent *)storedEventWithDataFuture:(GDTCORDataFuture *)dataFuture; - @end NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h index 4d61a21..a08a456 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h @@ -53,7 +53,7 @@ NS_ASSUME_NONNULL_BEGIN * * When backgrounding, the library doesn't stop processing events, it's just that several background * tasks will end up being created for every event that's sent, and the stateful objects of the - * library (GDTCORStorage and GDTCORUploadCoordinator singletons) will deserialize themselves from + * library (GDTCORStorage and GDTCORUploadCoordinator instances) will deserialize themselves from * and to disk before and after every operation, respectively. */ @interface GDTCORLifecycle : NSObject diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h index d72c2c9..97bd083 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h @@ -19,12 +19,19 @@ #if !TARGET_OS_WATCH #import #endif + #if TARGET_OS_IOS || TARGET_OS_TV #import #elif TARGET_OS_OSX #import +#elif TARGET_OS_WATCH +#import #endif // TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS +#import +#endif + NS_ASSUME_NONNULL_BEGIN /** The GoogleDataTransport library version. */ @@ -39,14 +46,109 @@ FOUNDATION_EXPORT NSString *const kGDTCORApplicationWillEnterForegroundNotificat /** A notification sent out if the app is terminating. */ FOUNDATION_EXPORT NSString *const kGDTCORApplicationWillTerminateNotification; +/** The different possible network connection type. */ +typedef NS_ENUM(NSInteger, GDTCORNetworkType) { + GDTCORNetworkTypeUNKNOWN = 0, + GDTCORNetworkTypeWIFI = 1, + GDTCORNetworkTypeMobile = 2, +}; + +/** The different possible network connection mobile subtype. */ +typedef NS_ENUM(NSInteger, GDTCORNetworkMobileSubtype) { + GDTCORNetworkMobileSubtypeUNKNOWN = 0, + GDTCORNetworkMobileSubtypeGPRS = 1, + GDTCORNetworkMobileSubtypeEdge = 2, + GDTCORNetworkMobileSubtypeWCDMA = 3, + GDTCORNetworkMobileSubtypeHSDPA = 4, + GDTCORNetworkMobileSubtypeHSUPA = 5, + GDTCORNetworkMobileSubtypeCDMA1x = 6, + GDTCORNetworkMobileSubtypeCDMAEVDORev0 = 7, + GDTCORNetworkMobileSubtypeCDMAEVDORevA = 8, + GDTCORNetworkMobileSubtypeCDMAEVDORevB = 9, + GDTCORNetworkMobileSubtypeHRPD = 10, + GDTCORNetworkMobileSubtypeLTE = 11, +}; + #if !TARGET_OS_WATCH +/** Define SCNetworkReachabilityFlags as GDTCORNetworkReachabilityFlags on non-watchOS. */ +typedef SCNetworkReachabilityFlags GDTCORNetworkReachabilityFlags; + +/** Define SCNetworkReachabilityRef as GDTCORNetworkReachabilityRef on non-watchOS. */ +typedef SCNetworkReachabilityRef GDTCORNetworkReachabilityRef; + +#else +/** The different possible reachabilityFlags option on watchOS. */ +typedef NS_OPTIONS(uint32_t, GDTCORNetworkReachabilityFlags) { + kGDTCORNetworkReachabilityFlagsReachable = 1 << 1, + // TODO(doudounan): Add more options on watchOS if watchOS network connection information relative + // APIs available in the future. +}; + +/** Define a struct as GDTCORNetworkReachabilityRef on watchOS to store network connection + * information. */ +typedef struct { + // TODO(doudounan): Store network connection information on watchOS if watchOS network connection + // information relative APIs available in the future. +} GDTCORNetworkReachabilityRef; +#endif + +/** Returns a URL to the root directory under which all GDT-associated data must be saved. + * + * @return A URL to the root directory under which all GDT-associated data must be saved. + */ +NSURL *GDTCORRootDirectory(void); + +/** Compares flags with the reachable flag (on non-watchos with both reachable and + * connectionRequired flags), if available, and returns YES if network reachable. + * + * @param flags The set of reachability flags. + * @return YES if the network is reachable, NO otherwise. + */ +BOOL GDTCORReachabilityFlagsReachable(GDTCORNetworkReachabilityFlags flags); + /** Compares flags with the WWAN reachability flag, if available, and returns YES if present. * * @param flags The set of reachability flags. * @return YES if the WWAN flag is set, NO otherwise. */ -BOOL GDTCORReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags); -#endif +BOOL GDTCORReachabilityFlagsContainWWAN(GDTCORNetworkReachabilityFlags flags); + +/** Generates an enum message GDTCORNetworkType representing network connection type. + * + * @return A GDTCORNetworkType representing network connection type. + */ +GDTCORNetworkType GDTCORNetworkTypeMessage(void); + +/** Generates an enum message GDTCORNetworkMobileSubtype representing network connection mobile + * subtype. + * + * @return A GDTCORNetworkMobileSubtype representing network connection mobile subtype. + */ +GDTCORNetworkMobileSubtype GDTCORNetworkMobileSubTypeMessage(void); + +/** Writes the given object to the given fileURL and populates the given error if it fails. + * + * @param obj The object to encode. + * @param filePath The path to write the object to. Can be nil if you just need the data. + * @param error The error to populate if something goes wrong. + * @return The data of the archive. If error is nil, it's been written to disk. + */ +NSData *_Nullable GDTCOREncodeArchive(id obj, + NSString *_Nullable filePath, + NSError *_Nullable *error); + +/** Decodes an object of the given class from the given archive path or data and populates the given + * error if it fails. + * + * @param archiveClass The class of the archive's root object. + * @param archivePath The path to the archived data. Don't use with the archiveData param. + * @param archiveData The data to decode. Don't use with the archivePath param. + * @param error The error to populate if something goes wrong. + */ +id _Nullable GDTCORDecodeArchive(Class archiveClass, + NSString *_Nullable archivePath, + NSData *_Nullable archiveData, + NSError *_Nullable *error); /** A typedef identify background identifiers. */ typedef volatile NSUInteger GDTCORBackgroundIdentifier; @@ -55,10 +157,14 @@ typedef volatile NSUInteger GDTCORBackgroundIdentifier; FOUNDATION_EXPORT const GDTCORBackgroundIdentifier GDTCORBackgroundIdentifierInvalid; #if TARGET_OS_IOS || TARGET_OS_TV -/** A protocol that wraps UIApplicationDelegate or NSObject protocol, depending on the platform. */ +/** A protocol that wraps UIApplicationDelegate, WKExtensionDelegate or NSObject protocol, depending + * on the platform. + */ @protocol GDTCORApplicationDelegate #elif TARGET_OS_OSX @protocol GDTCORApplicationDelegate +#elif TARGET_OS_WATCH +@protocol GDTCORApplicationDelegate #else @protocol GDTCORApplicationDelegate #endif // TARGET_OS_IOS || TARGET_OS_TV diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h index 583e84d..d1f6754 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h @@ -16,11 +16,10 @@ #import +#import #import #import -@class GDTCORStoredEvent; - NS_ASSUME_NONNULL_BEGIN /** Options that define a set of upload conditions. This is used to help minimize end user data @@ -58,7 +57,7 @@ typedef NS_OPTIONS(NSInteger, GDTCORUploadConditions) { * * @param event The event to prioritize. */ -- (void)prioritizeEvent:(GDTCORStoredEvent *)event; +- (void)prioritizeEvent:(GDTCOREvent *)event; /** Returns a set of events to upload given a set of conditions. * @@ -70,6 +69,11 @@ typedef NS_OPTIONS(NSInteger, GDTCORUploadConditions) { - (GDTCORUploadPackage *)uploadPackageWithTarget:(GDTCORTarget)target conditions:(GDTCORUploadConditions)conditions; +@optional + +/** Saves the state of the prioritizer. */ +- (void)saveState; + @end NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORReachability.h similarity index 84% rename from Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h rename to Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORReachability.h index 7879b59..a74e311 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORReachability.h @@ -16,18 +16,15 @@ #import -#if !TARGET_OS_WATCH -#import -#endif +#import NS_ASSUME_NONNULL_BEGIN /** This class helps determine upload conditions by determining connectivity. */ @interface GDTCORReachability : NSObject -#if !TARGET_OS_WATCH + /** The current set flags indicating network conditions */ -+ (SCNetworkReachabilityFlags)currentFlags; -#endif ++ (GDTCORNetworkReachabilityFlags)currentFlags; @end diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h index 0a8fbb0..63f82a7 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h @@ -17,6 +17,7 @@ #import #import +#import #import #import @@ -38,6 +39,13 @@ NS_ASSUME_NONNULL_BEGIN */ - (void)registerUploader:(id)backend target:(GDTCORTarget)target; +/** Registers a storage implementation with the GoogleDataTransport infrastructure. + * + * @param storage The storage instance to be associated with this uploader and target. + * @param target The target this backend object will be responsible for. + */ +- (void)registerStorage:(id)storage target:(GDTCORTarget)target; + /** Registers a event prioritizer implementation with the GoogleDataTransport infrastructure. * * @param prioritizer The prioritizer object to register. diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStorageProtocol.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStorageProtocol.h new file mode 100644 index 0000000..3cc175e --- /dev/null +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStorageProtocol.h @@ -0,0 +1,78 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import +#import + +@class GDTCOREvent; + +NS_ASSUME_NONNULL_BEGIN + +/** Defines the interface a storage subsystem is expected to implement. */ +@protocol GDTCORStorageProtocol + +@required + +/** Stores an event and calls onComplete with a non-nil error if anything went wrong. + * + * @param event The event to store + * @param completion The completion block to call after an attempt to store the event has been made. + */ +- (void)storeEvent:(GDTCOREvent *)event + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion; + +/** Removes the events from storage. */ +- (void)removeEvents:(NSSet *)eventIDs; + +/** Persists the given data with the given key. + * + * @param data The data to store. + * @param key The unique key to store it to. + * @param onComplete An block to be run when storage of the data is complete. + */ +- (void)storeLibraryData:(NSData *)data + forKey:(NSString *)key + onComplete:(void (^)(NSError *_Nullable error))onComplete; + +/** Retrieves the stored data for the given key. + * + * @param key The key corresponding to the desired data. + * @param onComplete The callback to invoke with the data once it's retrieved. + */ +- (void)libraryDataForKey:(NSString *)key + onComplete:(void (^)(NSData *_Nullable data, NSError *_Nullable error))onComplete; + +/** Removes data from storage and calls the callback when complete. + * + * @param key The key of the data to remove. + * @param onComplete The callback that will be invoked when removing the data is complete. + */ +- (void)removeLibraryDataForKey:(NSString *)key + onComplete:(void (^)(NSError *_Nullable error))onComplete; + +@end + +/** Retrieves the storage instance for the given target. + * + * @param target The target. + * * @return The storage instance registered for the target, or nil if there is none. + */ +FOUNDATION_EXPORT +id _Nullable GDTCORStorageInstanceForTarget(GDTCORTarget target); + +NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h deleted file mode 100644 index 647b220..0000000 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2019 Google - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#import - -#import -#import - -@class GDTCOREvent; - -NS_ASSUME_NONNULL_BEGIN - -@interface GDTCORStoredEvent : NSObject - -/** The data future representing the original event's transport bytes. */ -@property(readonly, nonatomic) GDTCORDataFuture *dataFuture; - -/** The mapping identifier, to allow backends to map the transport bytes to a proto. */ -@property(readonly, nonatomic) NSString *mappingID; - -/** The identifier for the backend this event will eventually be sent to. */ -@property(readonly, nonatomic) NSNumber *target; - -/** The quality of service tier this event belongs to. */ -@property(readonly, nonatomic) GDTCOREventQoS qosTier; - -/** The clock snapshot at the time of the event. */ -@property(readonly, nonatomic) GDTCORClock *clockSnapshot; - -/** A dictionary provided to aid prioritizers by allowing the passing of arbitrary data. - * - * @note Ensure that custom classes in this dict implement NSSecureCoding to prevent loss of data. - */ -@property(readonly, nullable, nonatomic) NSDictionary *customPrioritizationParams; - -/** Initializes a stored event with the given URL and event. - * - * @param event The event this stored event represents. - * @param dataFuture The dataFuture this event represents. - * @return An instance of this class. - */ -- (instancetype)initWithEvent:(GDTCOREvent *)event dataFuture:(GDTCORDataFuture *)dataFuture; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h index 9c72115..445ff72 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h @@ -49,7 +49,7 @@ NS_ASSUME_NONNULL_BEGIN * @param completion A block that will be called when the event has been written or dropped. */ - (void)sendTelemetryEvent:(GDTCOREvent *)event - onComplete:(void (^)(BOOL wasWritten, NSError *_Nullable error))completion; + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion; /** Copies and sends an internal telemetry event. Events sent using this API are lower in priority, * and sometimes won't be sent on their own. @@ -69,7 +69,7 @@ NS_ASSUME_NONNULL_BEGIN * @param completion A block that will be called when the event has been written or dropped. */ - (void)sendDataEvent:(GDTCOREvent *)event - onComplete:(void (^)(BOOL wasWritten, NSError *_Nullable error))completion; + onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion; /** Copies and sends an SDK service data event. Events send using this API are higher in priority, * and will cause a network request at some point in the relative near future. diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h index 46a676b..4f1d9da 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h @@ -15,11 +15,10 @@ */ #import - #import @class GDTCORClock; -@class GDTCORStoredEvent; +@class GDTCOREvent; @class GDTCORUploadPackage; /** A protocol that allows a handler to respond to package lifecycle events. */ @@ -47,7 +46,7 @@ @interface GDTCORUploadPackage : NSObject /** The set of stored events in this upload package. */ -@property(nonatomic) NSSet *events; +@property(nonatomic) NSSet *events; /** The expiration time. If [[GDTCORClock snapshot] isAfter:deliverByTime] this package has expired. * @@ -63,10 +62,7 @@ * @param target The target/destination of this package. * @return An instance of this class. */ -- (instancetype)initWithTarget:(GDTCORTarget)target NS_DESIGNATED_INITIALIZER; - -// Please use the designated initializer. -- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithTarget:(GDTCORTarget)target; /** Completes delivery of the package. * diff --git a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h index e46a385..a02451a 100644 --- a/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h +++ b/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h @@ -16,14 +16,12 @@ #import "GDTCORClock.h" #import "GDTCORConsoleLogger.h" -#import "GDTCORDataFuture.h" #import "GDTCOREvent.h" #import "GDTCOREventDataObject.h" #import "GDTCOREventTransformer.h" #import "GDTCORLifecycle.h" #import "GDTCORPrioritizer.h" #import "GDTCORRegistrar.h" -#import "GDTCORStoredEvent.h" #import "GDTCORTargets.h" #import "GDTCORTransport.h" #import "GDTCORUploadPackage.h" diff --git a/Pods/GoogleDataTransport/README.md b/Pods/GoogleDataTransport/README.md index ab36632..a396a21 100644 --- a/Pods/GoogleDataTransport/README.md +++ b/Pods/GoogleDataTransport/README.md @@ -1,12 +1,29 @@ -# Firebase iOS Open Source Development - [![Actions Status][gh-core-badge]][gh-actions] - [![Actions Status][gh-dynamiclinks-badge]][gh-actions] - [![Actions Status][gh-datatransport-badge]][gh-actions] - [![Actions Status][gh-storage-badge]][gh-actions] - [![Actions Status][gh-zip-badge]][gh-actions] - [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains all Firebase iOS SDK source except FirebaseAnalytics, +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The @@ -72,6 +89,10 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least @@ -119,8 +140,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -134,7 +155,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -165,18 +186,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -202,32 +231,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -257,8 +288,20 @@ Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). [gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg [gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg [gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg [gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg [gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg [gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m index 9dfa4b9..ba65913 100644 --- a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m @@ -22,13 +22,16 @@ #import #endif // TARGET_OS_IOS || TARGET_OS_TV +#import #import +#import +#import #import #import #import -#import "GDTCCTLibrary/Private/GDTCCTPrioritizer.h" +#import "GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h" #pragma mark - General purpose encoders @@ -38,12 +41,12 @@ } pb_bytes_array_t *GDTCCTEncodeData(NSData *data) { - pb_bytes_array_t *pbBytes = malloc(PB_BYTES_ARRAY_T_ALLOCSIZE(data.length)); - if (pbBytes != NULL) { - memcpy(pbBytes->bytes, [data bytes], data.length); - pbBytes->size = (pb_size_t)data.length; + pb_bytes_array_t *pbBytesArray = calloc(1, PB_BYTES_ARRAY_T_ALLOCSIZE(data.length)); + if (pbBytesArray != NULL) { + [data getBytes:pbBytesArray->bytes length:data.length]; + pbBytesArray->size = (pb_size_t)data.length; } - return pbBytes; + return pbBytesArray; } #pragma mark - CCT object constructors @@ -70,18 +73,18 @@ } gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( - NSDictionary *> *logMappingIDToLogSet) { + NSDictionary *> *logMappingIDToLogSet) { gdt_cct_BatchedLogRequest batchedLogRequest = gdt_cct_BatchedLogRequest_init_default; NSUInteger numberOfLogRequests = logMappingIDToLogSet.count; - gdt_cct_LogRequest *logRequests = malloc(sizeof(gdt_cct_LogRequest) * numberOfLogRequests); + gdt_cct_LogRequest *logRequests = calloc(numberOfLogRequests, sizeof(gdt_cct_LogRequest)); if (logRequests == NULL) { return batchedLogRequest; } __block int i = 0; - [logMappingIDToLogSet enumerateKeysAndObjectsUsingBlock:^( - NSString *_Nonnull logMappingID, - NSSet *_Nonnull logSet, BOOL *_Nonnull stop) { + [logMappingIDToLogSet enumerateKeysAndObjectsUsingBlock:^(NSString *_Nonnull logMappingID, + NSSet *_Nonnull logSet, + BOOL *_Nonnull stop) { int32_t logSource = [logMappingID intValue]; gdt_cct_LogRequest logRequest = GDTCCTConstructLogRequest(logSource, logSet); logRequests[i] = logRequest; @@ -94,7 +97,7 @@ gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( } gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, - NSSet *_Nonnull logSet) { + NSSet *_Nonnull logSet) { if (logSet.count == 0) { GDTCORLogError(GDTCORMCEGeneralError, @"%@", @"An empty event set can't be serialized to proto."); @@ -106,12 +109,12 @@ gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, logRequest.has_log_source = 1; logRequest.client_info = GDTCCTConstructClientInfo(); logRequest.has_client_info = 1; - logRequest.log_event = malloc(sizeof(gdt_cct_LogEvent) * logSet.count); + logRequest.log_event = calloc(logSet.count, sizeof(gdt_cct_LogEvent)); if (logRequest.log_event == NULL) { return logRequest; } int i = 0; - for (GDTCORStoredEvent *log in logSet) { + for (GDTCOREvent *log in logSet) { gdt_cct_LogEvent logEvent = GDTCCTConstructLogEvent(log); logRequest.log_event[i] = logEvent; i++; @@ -127,7 +130,7 @@ gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, return logRequest; } -gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTCORStoredEvent *event) { +gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTCOREvent *event) { gdt_cct_LogEvent logEvent = gdt_cct_LogEvent_init_default; logEvent.event_time_ms = event.clockSnapshot.timeMillis; logEvent.has_event_time_ms = 1; @@ -135,15 +138,30 @@ gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTCORStoredEvent *event) { logEvent.has_event_uptime_ms = 1; logEvent.timezone_offset_seconds = event.clockSnapshot.timezoneOffsetSeconds; logEvent.has_timezone_offset_seconds = 1; - // TODO: Read network_connection_info from the custom params dict. - + if (event.customBytes) { + NSData *networkConnectionInfoData = event.networkConnectionInfoData; + if (networkConnectionInfoData) { + [networkConnectionInfoData getBytes:&logEvent.network_connection_info + length:networkConnectionInfoData.length]; + logEvent.has_network_connection_info = 1; + } + NSNumber *eventCode = event.eventCode; + if (eventCode != nil) { + logEvent.has_event_code = 1; + logEvent.event_code = [eventCode intValue]; + } + } NSError *error; - NSData *extensionBytes = [NSData dataWithContentsOfURL:event.dataFuture.fileURL - options:0 - error:&error]; + NSData *extensionBytes; + if (event.fileURL) { + extensionBytes = [NSData dataWithContentsOfFile:event.fileURL.path options:0 error:&error]; + } else { + GDTCORLogError(GDTCORMCEFileReadError, @"%@", @"An event's fileURL property was nil."); + return logEvent; + } if (error) { - GDTCORLogError(GDTCORMCEGeneralError, - @"There was an error reading extension bytes from disk: %@", error); + GDTCORLogWarning(GDTCORMCWFileReadError, + @"There was an error reading extension bytes from disk: %@", error); return logEvent; } logEvent.source_extension = GDTCCTEncodeData(extensionBytes); // read bytes from the file. @@ -189,6 +207,57 @@ gdt_cct_IosClientInfo GDTCCTConstructiOSClientInfo() { return iOSClientInfo; } +NSData *GDTCCTConstructNetworkConnectionInfoData() { + gdt_cct_NetworkConnectionInfo networkConnectionInfo = gdt_cct_NetworkConnectionInfo_init_default; + NSInteger currentNetworkType = GDTCORNetworkTypeMessage(); + if (currentNetworkType) { + networkConnectionInfo.has_network_type = 1; + if (currentNetworkType == GDTCORNetworkTypeMobile) { + networkConnectionInfo.network_type = gdt_cct_NetworkConnectionInfo_NetworkType_MOBILE; + networkConnectionInfo.mobile_subtype = GDTCCTNetworkConnectionInfoNetworkMobileSubtype(); + if (networkConnectionInfo.mobile_subtype != + gdt_cct_NetworkConnectionInfo_MobileSubtype_UNKNOWN_MOBILE_SUBTYPE) { + networkConnectionInfo.has_mobile_subtype = 1; + } + } else { + networkConnectionInfo.network_type = gdt_cct_NetworkConnectionInfo_NetworkType_WIFI; + } + } + NSData *networkConnectionInfoData = [NSData dataWithBytes:&networkConnectionInfo + length:sizeof(networkConnectionInfo)]; + return networkConnectionInfoData; +} + +gdt_cct_NetworkConnectionInfo_MobileSubtype GDTCCTNetworkConnectionInfoNetworkMobileSubtype() { + NSNumber *networkMobileSubtypeMessage = @(GDTCORNetworkMobileSubTypeMessage()); + if (!networkMobileSubtypeMessage.intValue) { + return gdt_cct_NetworkConnectionInfo_MobileSubtype_UNKNOWN_MOBILE_SUBTYPE; + } + static NSDictionary *MessageToNetworkSubTypeMessage; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + MessageToNetworkSubTypeMessage = @{ + @(GDTCORNetworkMobileSubtypeGPRS) : @(gdt_cct_NetworkConnectionInfo_MobileSubtype_GPRS), + @(GDTCORNetworkMobileSubtypeEdge) : @(gdt_cct_NetworkConnectionInfo_MobileSubtype_EDGE), + @(GDTCORNetworkMobileSubtypeWCDMA) : + @(gdt_cct_NetworkConnectionInfo_MobileSubtype_UNKNOWN_MOBILE_SUBTYPE), + @(GDTCORNetworkMobileSubtypeHSDPA) : @(gdt_cct_NetworkConnectionInfo_MobileSubtype_HSDPA), + @(GDTCORNetworkMobileSubtypeHSUPA) : @(gdt_cct_NetworkConnectionInfo_MobileSubtype_HSUPA), + @(GDTCORNetworkMobileSubtypeCDMA1x) : @(gdt_cct_NetworkConnectionInfo_MobileSubtype_CDMA), + @(GDTCORNetworkMobileSubtypeCDMAEVDORev0) : + @(gdt_cct_NetworkConnectionInfo_MobileSubtype_EVDO_0), + @(GDTCORNetworkMobileSubtypeCDMAEVDORevA) : + @(gdt_cct_NetworkConnectionInfo_MobileSubtype_EVDO_A), + @(GDTCORNetworkMobileSubtypeCDMAEVDORevB) : + @(gdt_cct_NetworkConnectionInfo_MobileSubtype_EVDO_B), + @(GDTCORNetworkMobileSubtypeHRPD) : @(gdt_cct_NetworkConnectionInfo_MobileSubtype_EHRPD), + @(GDTCORNetworkMobileSubtypeLTE) : @(gdt_cct_NetworkConnectionInfo_MobileSubtype_LTE), + }; + }); + NSNumber *networkMobileSubtype = MessageToNetworkSubTypeMessage[networkMobileSubtypeMessage]; + return networkMobileSubtype.intValue; +} + #pragma mark - CCT Object decoders gdt_cct_LogResponse GDTCCTDecodeLogResponse(NSData *data, NSError **error) { diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m index 3e2906c..d0382cc 100644 --- a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m @@ -18,12 +18,42 @@ #import #import +#import #import -#import #import +#import "GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h" +#import "GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h" + const static int64_t kMillisPerDay = 8.64e+7; +/** Creates and/or returns a singleton NSString that is the NSCoding file location. + * + * @return The NSCoding file path. + */ +static NSString *ArchivePath() { + static NSString *archivePath; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + archivePath = [GDTCORRootDirectory() URLByAppendingPathComponent:@"GDTCCTPrioritizer"].path; + }); + return archivePath; +} + +/** This class extension is for declaring private properties. */ +@interface GDTCCTPrioritizer () + +/** All CCT events that have been processed by this prioritizer. */ +@property(nonatomic) NSMutableSet *CCTEvents; + +/** All FLL events that have been processed by this prioritizer. */ +@property(nonatomic) NSMutableSet *FLLEvents; + +/** All CSH events that have been processed by this prioritizer. */ +@property(nonatomic) NSMutableSet *CSHEvents; + +@end + @implementation GDTCCTPrioritizer + (void)load { @@ -33,6 +63,10 @@ + (void)load { [[GDTCORRegistrar sharedInstance] registerPrioritizer:prioritizer target:kGDTCORTargetCSH]; } ++ (BOOL)supportsSecureCoding { + return YES; +} + + (instancetype)sharedInstance { static GDTCCTPrioritizer *sharedInstance; static dispatch_once_t onceToken; @@ -53,11 +87,37 @@ - (instancetype)init { return self; } +- (nullable NSSet *)eventsForTarget:(GDTCORTarget)target { + __block NSSet *events; + dispatch_sync(_queue, ^{ + switch (target) { + case kGDTCORTargetCCT: + events = [self->_CCTEvents copy]; + break; + + case kGDTCORTargetFLL: + events = [self->_FLLEvents copy]; + break; + + case kGDTCORTargetCSH: + events = [self->_CSHEvents copy]; + break; + + default: + break; + } + }); + return events; +} + #pragma mark - GDTCORPrioritizer Protocol -- (void)prioritizeEvent:(GDTCORStoredEvent *)event { +- (void)prioritizeEvent:(GDTCOREvent *)event { + if (event.needsNetworkConnectionInfoPopulated) { + event.networkConnectionInfoData = GDTCCTConstructNetworkConnectionInfoData(); + } dispatch_async(_queue, ^{ - switch (event.target.intValue) { + switch (event.target) { case kGDTCORTargetCCT: [self.CCTEvents addObject:event]; break; @@ -71,7 +131,7 @@ - (void)prioritizeEvent:(GDTCORStoredEvent *)event { break; default: - GDTCORLogDebug("GDTCCTPrioritizer doesn't support target %d", event.target.intValue); + GDTCORLogDebug(@"GDTCCTPrioritizer doesn't support target %ld", (long)event.target); break; } }); @@ -81,11 +141,11 @@ - (GDTCORUploadPackage *)uploadPackageWithTarget:(GDTCORTarget)target conditions:(GDTCORUploadConditions)conditions { GDTCORUploadPackage *package = [[GDTCORUploadPackage alloc] initWithTarget:target]; dispatch_sync(_queue, ^{ - NSSet *eventsThatWillBeSent = [self eventsForTarget:target - conditions:conditions]; + NSSet *eventsThatWillBeSent = [self eventsForTarget:target + conditions:conditions]; package.events = eventsThatWillBeSent; }); - GDTCORLogDebug("CCT: %lu events are in the upload package", (unsigned long)package.events.count); + GDTCORLogDebug(@"CCT: %lu events are in the upload package", (unsigned long)package.events.count); return package; } @@ -106,6 +166,17 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { GDTCCTQoSWifiOnly = 5, }; +- (void)saveState { + dispatch_sync(_queue, ^{ + NSError *error; + GDTCOREncodeArchive(self, ArchivePath(), &error); + if (error) { + GDTCORLogDebug(@"Serializing GDTCCTPrioritizer to an archive failed: %@", error); + } + }); + GDTCORLogDebug(@"GDTCCTPrioritizer saved state to %@ as requested by GDT.", ArchivePath()); +} + /** Converts a GDTCOREventQoS to a GDTCCTQoS tier. * * @param qosTier The GDTCOREventQoS value. @@ -137,10 +208,10 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { * @param target The target backend. * @return A set of events for the target. */ -- (NSSet *)eventsForTarget:(GDTCORTarget)target - conditions:(GDTCORUploadConditions)conditions { +- (NSSet *)eventsForTarget:(GDTCORTarget)target + conditions:(GDTCORUploadConditions)conditions { GDTCORClock __strong **timeOfLastDailyUpload = NULL; - NSSet *eventsToFilter; + NSSet *eventsToFilter; switch (target) { case kGDTCORTargetCCT: eventsToFilter = self.CCTEvents; @@ -164,20 +235,21 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { break; } - NSMutableSet *eventsThatWillBeSent = [[NSMutableSet alloc] init]; + NSMutableSet *eventsThatWillBeSent = [[NSMutableSet alloc] init]; // A high priority event effectively flushes all events to be sent. if ((conditions & GDTCORUploadConditionHighPriority) == GDTCORUploadConditionHighPriority) { - GDTCORLogDebug("%@", @"CCT: A high priority event is flushing all events."); + GDTCORLogDebug(@"%@", @"CCT: A high priority event is flushing all events."); return eventsToFilter; } // If on wifi, upload logs that are ok to send on wifi. if ((conditions & GDTCORUploadConditionWifiData) == GDTCORUploadConditionWifiData) { [eventsThatWillBeSent unionSet:[self logEventsOkToSendOnWifi:eventsToFilter]]; - GDTCORLogDebug("%@", @"CCT: events ok to send on wifi are being added to the upload package"); + GDTCORLogDebug(@"%@", @"CCT: events ok to send on wifi are being added to the upload package"); } else { [eventsThatWillBeSent unionSet:[self logEventsOkToSendOnMobileData:eventsToFilter]]; - GDTCORLogDebug("%@", @"CCT: events ok to send on mobile are being added to the upload package"); + GDTCORLogDebug(@"%@", + @"CCT: events ok to send on mobile are being added to the upload package"); } // If it's been > 24h since the last daily upload, upload logs with the daily QoS. @@ -186,12 +258,12 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { [GDTCORClock snapshot].timeMillis - (*timeOfLastDailyUpload).timeMillis; if (millisSinceLastUpload > kMillisPerDay) { [eventsThatWillBeSent unionSet:[self logEventsOkToSendDaily:eventsToFilter]]; - GDTCORLogDebug("%@", @"CCT: events ok to send daily are being added to the upload package"); + GDTCORLogDebug(@"%@", @"CCT: events ok to send daily are being added to the upload package"); } } else { *timeOfLastDailyUpload = [GDTCORClock snapshot]; [eventsThatWillBeSent unionSet:[self logEventsOkToSendDaily:eventsToFilter]]; - GDTCORLogDebug("%@", @"CCT: events ok to send daily are being added to the upload package"); + GDTCORLogDebug(@"%@", @"CCT: events ok to send daily are being added to the upload package"); } return eventsThatWillBeSent; } @@ -201,8 +273,8 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { * @note This should be called from a thread safe method. * @return A set of logs that are ok to upload whilst on mobile data. */ -- (NSSet *)logEventsOkToSendOnMobileData:(NSSet *)events { - return [events objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { +- (NSSet *)logEventsOkToSendOnMobileData:(NSSet *)events { + return [events objectsPassingTest:^BOOL(GDTCOREvent *_Nonnull event, BOOL *_Nonnull stop) { return [GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier) isEqual:@(GDTCCTQoSDefault)]; }]; } @@ -212,8 +284,8 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { * @note This should be called from a thread safe method. * @return A set of logs that are ok to upload whilst on wifi. */ -- (NSSet *)logEventsOkToSendOnWifi:(NSSet *)events { - return [events objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { +- (NSSet *)logEventsOkToSendOnWifi:(NSSet *)events { + return [events objectsPassingTest:^BOOL(GDTCOREvent *_Nonnull event, BOOL *_Nonnull stop) { NSNumber *qosTier = GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier); return [qosTier isEqual:@(GDTCCTQoSDefault)] || [qosTier isEqual:@(GDTCCTQoSWifiOnly)] || [qosTier isEqual:@(GDTCCTQoSDaily)]; @@ -225,18 +297,120 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { * @note This should be called from a thread safe method. * @return A set of logs that are ok to upload only once per day. */ -- (NSSet *)logEventsOkToSendDaily:(NSSet *)events { - return [events objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { +- (NSSet *)logEventsOkToSendDaily:(NSSet *)events { + return [events objectsPassingTest:^BOOL(GDTCOREvent *_Nonnull event, BOOL *_Nonnull stop) { return [GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier) isEqual:@(GDTCCTQoSDaily)]; }]; } +#pragma mark - NSSecureCoding + +/** NSSecureCoding key for the CCTEvents property. */ +static NSString *const GDTCCTUploaderCCTEventsKey = @"GDTCCTUploaderCCTEventsKey"; + +/** NSSecureCoding key for the CCTEvents property. */ +static NSString *const GDTCCTUploaderFLLEventsKey = @"GDTCCTUploaderFLLEventsKey"; + +/** NSSecureCoding key for the CCTEvents property. */ +static NSString *const GDTCCTUploaderCSHEventsKey = @"GDTCCTUploaderCSHEventsKey"; + +- (instancetype)initWithCoder:(NSCoder *)coder { + GDTCCTPrioritizer *sharedInstance = [GDTCCTPrioritizer sharedInstance]; + if (sharedInstance) { + NSSet *classes = [NSSet setWithObjects:[NSMutableSet class], [GDTCOREvent class], nil]; + NSMutableSet *decodedCCTEvents = [coder decodeObjectOfClasses:classes + forKey:GDTCCTUploaderCCTEventsKey]; + if (decodedCCTEvents) { + sharedInstance->_CCTEvents = decodedCCTEvents; + } + NSMutableSet *decodedFLLEvents = [coder decodeObjectOfClasses:classes + forKey:GDTCCTUploaderFLLEventsKey]; + if (decodedFLLEvents) { + sharedInstance->_FLLEvents = decodedFLLEvents; + } + NSMutableSet *decodedCSHEvents = [coder decodeObjectOfClasses:classes + forKey:GDTCCTUploaderCSHEventsKey]; + if (decodedCSHEvents) { + sharedInstance->_CSHEvents = decodedCSHEvents; + } + } + return sharedInstance; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + GDTCCTPrioritizer *sharedInstance = [GDTCCTPrioritizer sharedInstance]; + if (!sharedInstance) { + return; + } + NSMutableSet *CCTEvents = sharedInstance->_CCTEvents; + if (CCTEvents) { + [coder encodeObject:CCTEvents forKey:GDTCCTUploaderCCTEventsKey]; + } + NSMutableSet *FLLEvents = sharedInstance->_FLLEvents; + if (FLLEvents) { + [coder encodeObject:FLLEvents forKey:GDTCCTUploaderFLLEventsKey]; + } + NSMutableSet *CSHEvents = sharedInstance->_CSHEvents; + if (CSHEvents) { + [coder encodeObject:CSHEvents forKey:GDTCCTUploaderCSHEventsKey]; + } +} + +#pragma mark - GDTCORLifecycleProtocol + +- (void)appWillForeground:(GDTCORApplication *)app { + dispatch_async(_queue, ^{ + NSError *error; + GDTCORDecodeArchive([GDTCCTPrioritizer class], ArchivePath(), nil, &error); + if (error) { + GDTCORLogDebug(@"Deserializing GDTCCTPrioritizer from an archive failed: %@", error); + } + }); +} + +- (void)appWillBackground:(GDTCORApplication *)app { + dispatch_async(_queue, ^{ + // Immediately request a background task to run until the end of the current queue of work, and + // cancel it once the work is done. + __block GDTCORBackgroundIdentifier bgID = + [app beginBackgroundTaskWithName:@"GDTStorage" + expirationHandler:^{ + [app endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }]; + NSError *error; + GDTCOREncodeArchive(self, ArchivePath(), &error); + if (error) { + GDTCORLogDebug(@"Serializing GDTCCTPrioritizer to an archive failed: %@", error); + } + + // End the background task if it's still valid. + [app endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }); +} + +- (void)appWillTerminate:(GDTCORApplication *)application { + dispatch_sync(_queue, ^{ + NSError *error; + GDTCOREncodeArchive(self, ArchivePath(), &error); + if (error) { + GDTCORLogDebug(@"Serializing GDTCCTPrioritizer to an archive failed: %@", error); + } + }); +} + #pragma mark - GDTCORUploadPackageProtocol - (void)packageDelivered:(GDTCORUploadPackage *)package successful:(BOOL)successful { + // If sending the package wasn't successful, we should keep track of these events. + if (!successful) { + return; + } + dispatch_async(_queue, ^{ - NSSet *events = [package.events copy]; - for (GDTCORStoredEvent *event in events) { + NSSet *events = [package.events copy]; + for (GDTCOREvent *event in events) { // We don't know what collection the event was contained in, so attempt removal from all. [self.CCTEvents removeObject:event]; [self.FLLEvents removeObject:event]; diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m index 7c6d4f5..f50c9bf 100644 --- a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m @@ -150,7 +150,7 @@ - (nullable NSURL *)serverURLForTarget:(GDTCORTarget)target { return CSHServerURL; default: - GDTCORLogDebug("GDTCCTUploader doesn't support target %ld", (long)target); + GDTCORLogDebug(@"GDTCCTUploader doesn't support target %ld", (long)target); return nil; break; } @@ -197,56 +197,46 @@ - (void)uploadPackage:(GDTCORUploadPackage *)package { GDTCORTarget target = package.target; id completionHandler = ^(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error) { - GDTCORLogDebug("%@", @"CCT: request completed"); + GDTCORLogDebug(@"%@", @"CCT: request completed"); if (error) { GDTCORLogWarning(GDTCORMCWUploadFailed, @"There was an error uploading events: %@", error); } NSError *decodingError; + GDTCORClock *futureUploadTime; if (data) { gdt_cct_LogResponse logResponse = GDTCCTDecodeLogResponse(data, &decodingError); if (!decodingError && logResponse.has_next_request_wait_millis) { GDTCORLogDebug( - "CCT: The backend responded asking to not upload for %lld millis from now.", + @"CCT: The backend responded asking to not upload for %lld millis from now.", logResponse.next_request_wait_millis); - GDTCORClock *futureUploadTime = + futureUploadTime = [GDTCORClock clockSnapshotInTheFuture:logResponse.next_request_wait_millis]; - switch (target) { - case kGDTCORTargetCCT: - self->_CCTNextUploadTime = futureUploadTime; - break; - - case kGDTCORTargetFLL: - // Falls through. - case kGDTCORTargetCSH: - self->_FLLNextUploadTime = futureUploadTime; - default: - break; - } - } else { - GDTCORLogDebug("%@", @"CCT: The backend response failed to parse, so the next request " - @"won't occur until 15 minutes from now"); - // 15 minutes from now. - GDTCORClock *futureUploadTime = [GDTCORClock clockSnapshotInTheFuture:15 * 60 * 1000]; - switch (target) { - case kGDTCORTargetCCT: - self->_CCTNextUploadTime = futureUploadTime; - break; - - case kGDTCORTargetFLL: - // Falls through. - case kGDTCORTargetCSH: - self->_FLLNextUploadTime = futureUploadTime; - break; - - default: - break; - } + } else if (decodingError) { + GDTCORLogDebug(@"There was a response decoding error: %@", decodingError); } pb_release(gdt_cct_LogResponse_fields, &logResponse); } + if (!futureUploadTime) { + GDTCORLogDebug(@"%@", @"CCT: The backend response failed to parse, so the next request " + @"won't occur until 15 minutes from now"); + // 15 minutes from now. + futureUploadTime = [GDTCORClock clockSnapshotInTheFuture:15 * 60 * 1000]; + } + switch (target) { + case kGDTCORTargetCCT: + self->_CCTNextUploadTime = futureUploadTime; + break; + + case kGDTCORTargetFLL: + // Falls through. + case kGDTCORTargetCSH: + self->_FLLNextUploadTime = futureUploadTime; + default: + break; + } - // Only retry if one of these codes is returned. - if (((NSHTTPURLResponse *)response).statusCode == 429 || + // Only retry if one of these codes is returned, or there was an error. + if (error || ((NSHTTPURLResponse *)response).statusCode == 429 || ((NSHTTPURLResponse *)response).statusCode == 503) { [package retryDeliveryInTheFuture]; } else { @@ -256,7 +246,7 @@ - (void)uploadPackage:(GDTCORUploadPackage *)package { [[NSNotificationCenter defaultCenter] postNotificationName:GDTCCTUploadCompleteNotification object:@(package.events.count)]; #endif // #if !NDEBUG - GDTCORLogDebug("%@", @"CCT: package delivered"); + GDTCORLogDebug(@"%@", @"CCT: package delivered"); [package completeDelivery]; } @@ -275,35 +265,37 @@ - (void)uploadPackage:(GDTCORUploadPackage *)package { BOOL usingGzipData = gzippedData != nil && gzippedData.length < requestProtoData.length; NSData *dataToSend = usingGzipData ? gzippedData : requestProtoData; NSURLRequest *request = [self constructRequestForTarget:target data:dataToSend]; - GDTCORLogDebug("CTT: request created: %@", request); + GDTCORLogDebug(@"CTT: request created: %@", request); self.currentTask = [self.uploaderSession uploadTaskWithRequest:request fromData:dataToSend completionHandler:completionHandler]; - GDTCORLogDebug("%@", @"CCT: The upload task is about to begin."); + GDTCORLogDebug(@"%@", @"CCT: The upload task is about to begin."); [self.currentTask resume]; }); } - (BOOL)readyToUploadTarget:(GDTCORTarget)target conditions:(GDTCORUploadConditions)conditions { __block BOOL result = NO; + NSSet *CSHEvents = [[GDTCCTPrioritizer sharedInstance] eventsForTarget:kGDTCORTargetCSH]; dispatch_sync(_uploaderQueue, ^{ - if (target == kGDTCORTargetCSH && [GDTCCTPrioritizer sharedInstance].CSHEvents.count > 0) { - result = YES; + if (target == kGDTCORTargetCSH) { + result = CSHEvents.count > 0; return; } + if (self->_currentUploadPackage) { result = NO; - GDTCORLogDebug("%@", @"CCT: can't upload because a package is in flight"); + GDTCORLogDebug(@"%@", @"CCT: can't upload because a package is in flight"); return; } if (self->_currentTask) { result = NO; - GDTCORLogDebug("%@", @"CCT: can't upload because a task is in progress"); + GDTCORLogDebug(@"%@", @"CCT: can't upload because a task is in progress"); return; } if ((conditions & GDTCORUploadConditionHighPriority) == GDTCORUploadConditionHighPriority) { result = YES; - GDTCORLogDebug("%@", @"CCT: a high priority event is allowing an upload"); + GDTCORLogDebug(@"%@", @"CCT: a high priority event is allowing an upload"); return; } switch (target) { @@ -324,14 +316,14 @@ - (BOOL)readyToUploadTarget:(GDTCORTarget)target conditions:(GDTCORUploadConditi break; } if (result) { - GDTCORLogDebug("CCT: can upload to target %ld because the request wait time has transpired", + GDTCORLogDebug(@"CCT: can upload to target %ld because the request wait time has transpired", (long)target); } else { - GDTCORLogDebug("CCT: can't upload to target %ld because the backend asked to wait", + GDTCORLogDebug(@"CCT: can't upload to target %ld because the backend asked to wait", (long)target); } result = YES; - GDTCORLogDebug("CCT: can upload to target %ld because nothing is preventing it", (long)target); + GDTCORLogDebug(@"CCT: can upload to target %ld because nothing is preventing it", (long)target); }); return result; } @@ -345,15 +337,14 @@ - (BOOL)readyToUploadTarget:(GDTCORTarget)target conditions:(GDTCORUploadConditi */ - (nonnull NSData *)constructRequestProtoFromPackage:(GDTCORUploadPackage *)package { // Segment the log events by log type. - NSMutableDictionary *> *logMappingIDToLogSet = + NSMutableDictionary *> *logMappingIDToLogSet = [[NSMutableDictionary alloc] init]; - [package.events - enumerateObjectsUsingBlock:^(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { - NSMutableSet *logSet = logMappingIDToLogSet[event.mappingID]; - logSet = logSet ? logSet : [[NSMutableSet alloc] init]; - [logSet addObject:event]; - logMappingIDToLogSet[event.mappingID] = logSet; - }]; + [package.events enumerateObjectsUsingBlock:^(GDTCOREvent *_Nonnull event, BOOL *_Nonnull stop) { + NSMutableSet *logSet = logMappingIDToLogSet[event.mappingID]; + logSet = logSet ? logSet : [[NSMutableSet alloc] init]; + [logSet addObject:event]; + logMappingIDToLogSet[event.mappingID] = logSet; + }]; gdt_cct_BatchedLogRequest batchedLogRequest = GDTCCTConstructBatchedLogRequest(logMappingIDToLogSet); diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m new file mode 100644 index 0000000..1531e56 --- /dev/null +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m @@ -0,0 +1,236 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h" + +#import + +NSString *const GDTCCTNeedsNetworkConnectionInfo = @"needs_network_connection_info"; + +NSString *const GDTCCTNetworkConnectionInfo = @"network_connection_info"; + +NSString *const GDTCCTEventCodeInfo = @"event_code_info"; + +@implementation GDTCOREvent (GDTCCTSupport) + +- (void)setNeedsNetworkConnectionInfoPopulated:(BOOL)needsNetworkConnectionInfoPopulated { + if (!needsNetworkConnectionInfoPopulated) { + if (!self.customBytes) { + return; + } + + // Make sure we don't destroy the eventCode data, if any is present. + @try { + NSError *error; + NSMutableDictionary *bytesDict = + [[NSJSONSerialization JSONObjectWithData:self.customBytes options:0 + error:&error] mutableCopy]; + if (error) { + GDTCORLogDebug(@"Error when setting an event's event_code: %@", error); + return; + } + NSNumber *eventCode = bytesDict[GDTCCTEventCodeInfo]; + if (eventCode != nil) { + self.customBytes = + [NSJSONSerialization dataWithJSONObject:@{GDTCCTEventCodeInfo : eventCode} + options:0 + error:&error]; + } + } @catch (NSException *exception) { + GDTCORLogDebug(@"Error when setting the event for needs_network_connection_info: %@", + exception); + } + } else { + @try { + NSError *error; + NSMutableDictionary *bytesDict; + if (self.customBytes) { + bytesDict = [[NSJSONSerialization JSONObjectWithData:self.customBytes + options:0 + error:&error] mutableCopy]; + if (error) { + GDTCORLogDebug(@"Error when setting an even'ts event_code: %@", error); + return; + } + } else { + bytesDict = [[NSMutableDictionary alloc] init]; + } + [bytesDict setObject:@YES forKey:GDTCCTNeedsNetworkConnectionInfo]; + self.customBytes = [NSJSONSerialization dataWithJSONObject:bytesDict options:0 error:&error]; + } @catch (NSException *exception) { + GDTCORLogDebug(@"Error when setting the event for needs_network_connection_info: %@", + exception); + } + } +} + +- (BOOL)needsNetworkConnectionInfoPopulated { + if (self.customBytes) { + @try { + NSError *error; + NSDictionary *bytesDict = [NSJSONSerialization JSONObjectWithData:self.customBytes + options:0 + error:&error]; + return bytesDict && !error && [bytesDict[GDTCCTNeedsNetworkConnectionInfo] boolValue]; + } @catch (NSException *exception) { + GDTCORLogDebug(@"Error when checking the event for needs_network_connection_info: %@", + exception); + } + } + return NO; +} + +- (void)setNetworkConnectionInfoData:(NSData *)networkConnectionInfoData { + @try { + NSError *error; + NSString *dataString = [networkConnectionInfoData base64EncodedStringWithOptions:0]; + if (dataString != nil) { + NSMutableDictionary *bytesDict; + if (self.customBytes) { + bytesDict = [[NSJSONSerialization JSONObjectWithData:self.customBytes + options:0 + error:&error] mutableCopy]; + if (error) { + GDTCORLogDebug(@"Error when setting an even'ts event_code: %@", error); + return; + } + } else { + bytesDict = [[NSMutableDictionary alloc] init]; + } + [bytesDict setObject:dataString forKey:GDTCCTNetworkConnectionInfo]; + self.customBytes = [NSJSONSerialization dataWithJSONObject:bytesDict options:0 error:&error]; + if (error) { + self.customBytes = nil; + GDTCORLogDebug(@"Error when setting an event's network_connection_info: %@", error); + } + } + } @catch (NSException *exception) { + GDTCORLogDebug(@"Error when setting an event's network_connection_info: %@", exception); + } +} + +- (nullable NSData *)networkConnectionInfoData { + if (self.customBytes) { + @try { + NSError *error; + NSDictionary *bytesDict = [NSJSONSerialization JSONObjectWithData:self.customBytes + options:0 + error:&error]; + NSString *base64Data = bytesDict[GDTCCTNetworkConnectionInfo]; + NSData *networkConnectionInfoData = [[NSData alloc] initWithBase64EncodedString:base64Data + options:0]; + if (error) { + GDTCORLogDebug(@"Error when getting an event's network_connection_info: %@", error); + return nil; + } else { + return networkConnectionInfoData; + } + } @catch (NSException *exception) { + GDTCORLogDebug(@"Error when getting an event's network_connection_info: %@", exception); + } + } + return nil; +} + +- (NSNumber *)eventCode { + if (self.customBytes) { + @try { + NSError *error; + NSDictionary *bytesDict = [NSJSONSerialization JSONObjectWithData:self.customBytes + options:0 + error:&error]; + NSString *eventCodeString = bytesDict[GDTCCTEventCodeInfo]; + + if (!eventCodeString) { + return nil; + } + + NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; + formatter.numberStyle = NSNumberFormatterDecimalStyle; + NSNumber *eventCode = [formatter numberFromString:eventCodeString]; + + if (error) { + GDTCORLogDebug(@"Error when getting an event's network_connection_info: %@", error); + return nil; + } else { + return eventCode; + } + } @catch (NSException *exception) { + GDTCORLogDebug(@"Error when getting an event's event_code: %@", exception); + } + } + return nil; +} + +- (void)setEventCode:(NSNumber *)eventCode { + if (eventCode == nil) { + if (!self.customBytes) { + return; + } + + NSError *error; + NSMutableDictionary *bytesDict = [[NSJSONSerialization JSONObjectWithData:self.customBytes + options:0 + error:&error] mutableCopy]; + if (error) { + GDTCORLogDebug(@"Error when setting an event's event_code: %@", error); + return; + } + + [bytesDict removeObjectForKey:GDTCCTEventCodeInfo]; + self.customBytes = [NSJSONSerialization dataWithJSONObject:bytesDict options:0 error:&error]; + if (error) { + self.customBytes = nil; + GDTCORLogDebug(@"Error when setting an event's event_code: %@", error); + return; + } + return; + } + + @try { + NSMutableDictionary *bytesDict; + NSError *error; + if (self.customBytes) { + bytesDict = [[NSJSONSerialization JSONObjectWithData:self.customBytes options:0 + error:&error] mutableCopy]; + if (error) { + GDTCORLogDebug(@"Error when setting an event's event_code: %@", error); + return; + } + } else { + bytesDict = [[NSMutableDictionary alloc] init]; + } + + NSString *eventCodeString = [eventCode stringValue]; + if (eventCodeString == nil) { + return; + } + + [bytesDict setObject:eventCodeString forKey:GDTCCTEventCodeInfo]; + + self.customBytes = [NSJSONSerialization dataWithJSONObject:bytesDict options:0 error:&error]; + if (error) { + self.customBytes = nil; + GDTCORLogDebug(@"Error when setting an event's network_connection_info: %@", error); + return; + } + + } @catch (NSException *exception) { + GDTCORLogDebug(@"Error when getting an event's network_connection_info: %@", exception); + } +} + +@end diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h index 08081cc..8051f0e 100644 --- a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h @@ -16,7 +16,8 @@ #import -#import +#import +#import #import "GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h" @@ -26,7 +27,7 @@ NS_ASSUME_NONNULL_BEGIN /** Converts an NSString* to a pb_bytes_array_t*. * - * @note malloc is called in this method. Ensure that pb_release is called on this or the parent. + * @note calloc is called in this method. Ensure that pb_release is called on this or the parent. * * @param string The string to convert. * @return A newly allocated array of bytes representing the UTF8 encoding of the string. @@ -35,7 +36,7 @@ pb_bytes_array_t *GDTCCTEncodeString(NSString *string); /** Converts an NSData to a pb_bytes_array_t*. * - * @note malloc is called in this method. Ensure that pb_release is called on this or the parent. + * @note calloc is called in this method. Ensure that pb_release is called on this or the parent. * * @param data The data to convert. * @return A newly allocated array of bytes with [data bytes] copied into it. @@ -56,31 +57,31 @@ NSData *GDTCCTEncodeBatchedLogRequest(gdt_cct_BatchedLogRequest *batchedLogReque /** Constructs a gdt_cct_BatchedLogRequest given sets of events segemented by mapping ID. * - * @note malloc is called in this method. Ensure that pb_release is called on this or the parent. + * @note calloc is called in this method. Ensure that pb_release is called on this or the parent. * * @param logMappingIDToLogSet A map of mapping IDs to sets of events to convert into a batch. * @return A newly created gdt_cct_BatchedLogRequest. */ FOUNDATION_EXPORT gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( - NSDictionary *> *logMappingIDToLogSet); + NSDictionary *> *logMappingIDToLogSet); /** Constructs a log request given a log source and a set of events. * - * @note malloc is called in this method. Ensure that pb_release is called on this or the parent. + * @note calloc is called in this method. Ensure that pb_release is called on this or the parent. * @param logSource The CCT log source to put into the log request. * @param logSet The set of events to send in this log request. */ FOUNDATION_EXPORT -gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, NSSet *logSet); +gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, NSSet *logSet); -/** Constructs a gdt_cct_LogEvent given a GDTCORStoredEvent*. +/** Constructs a gdt_cct_LogEvent given a GDTCOREvent*. * - * @param event The GDTCORStoredEvent to convert. + * @param event The GDTCOREvent to convert. * @return The new gdt_cct_LogEvent object. */ FOUNDATION_EXPORT -gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTCORStoredEvent *event); +gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTCOREvent *event); /** Constructs a gdt_cct_ClientInfo representing the client device. * @@ -96,11 +97,26 @@ gdt_cct_ClientInfo GDTCCTConstructClientInfo(void); FOUNDATION_EXPORT gdt_cct_IosClientInfo GDTCCTConstructiOSClientInfo(void); +/** Constructs the data of a gdt_cct_NetworkConnectionInfo representing the client nework connection + * information. + * + * @return The data of a gdt_cct_NetworkConnectionInfo object. + */ +FOUNDATION_EXPORT +NSData *GDTCCTConstructNetworkConnectionInfoData(void); + +/** Return a gdt_cct_NetworkConnectionInfo_MobileSubtype representing the client + * + * @return The gdt_cct_NetworkConnectionInfo_MobileSubtype. + */ +FOUNDATION_EXPORT +gdt_cct_NetworkConnectionInfo_MobileSubtype GDTCCTNetworkConnectionInfoNetworkMobileSubtype(void); + #pragma mark - CCT object decoders /** Decodes a gdt_cct_LogResponse given proto bytes. * - * @note malloc is called in this method. Ensure that pb_release is called on the return value. + * @note calloc is called in this method. Ensure that pb_release is called on the return value. * * @param data The proto bytes of the gdt_cct_LogResponse. * @param error An error that will be populated if something went wrong during decoding. diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h index 22414e2..7b7921b 100644 --- a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h @@ -17,25 +17,18 @@ #import #import +#import #import +#import NS_ASSUME_NONNULL_BEGIN /** Manages the prioritization of events from GoogleDataTransport. */ -@interface GDTCCTPrioritizer : NSObject +@interface GDTCCTPrioritizer : NSObject /** The queue on which this prioritizer operates. */ @property(nonatomic) dispatch_queue_t queue; -/** All CCT events that have been processed by this prioritizer. */ -@property(nonatomic) NSMutableSet *CCTEvents; - -/** All FLL events that have been processed by this prioritizer. */ -@property(nonatomic) NSMutableSet *FLLEvents; - -/** All CSH events that have been processed by this prioritizer. */ -@property(nonatomic) NSMutableSet *CSHEvents; - /** The most recent attempted upload of CCT daily uploaded logs. */ @property(nonatomic) GDTCORClock *CCTTimeOfLastDailyUpload; @@ -48,6 +41,13 @@ NS_ASSUME_NONNULL_BEGIN */ + (instancetype)sharedInstance; +/** Returns a set of events that have been prioritized for the given target. + * + * @param target The target to check. CCT, FLL, and CSH are currently supported by this class. + * @return The set of events prioritized so far. + */ +- (nullable NSSet *)eventsForTarget:(GDTCORTarget)target; + NS_ASSUME_NONNULL_END @end diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c index 95846e6..836031a 100644 --- a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.3.9.3 */ +/* Generated by nanopb-0.3.9.5 */ #include "cct.nanopb.h" diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h index a6d4cfb..e9d9a12 100644 --- a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.3.9.3 */ +/* Generated by nanopb-0.3.9.5 */ #ifndef PB_GDT_CCT_CCT_NANOPB_H_INCLUDED #define PB_GDT_CCT_CCT_NANOPB_H_INCLUDED diff --git a/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h new file mode 100644 index 0000000..e3a0b0c --- /dev/null +++ b/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h @@ -0,0 +1,51 @@ +/* + * Copyright 2020 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** A string sets in customBytes as a key paired to @YES if current event needs to + * populate network connection info data, @NO otherwise. + */ +FOUNDATION_EXPORT NSString *const GDTCCTNeedsNetworkConnectionInfo; + +/** A string sets in customBytes as a key paired to the network connection info data + * of current event. + */ +FOUNDATION_EXPORT NSString *const GDTCCTNetworkConnectionInfo; + +/** A category that uses the customBytes property of a GDTCOREvent to store network connection info. + */ +@interface GDTCOREvent (GDTCCTSupport) + +/** If YES, needs the network connection info field set during prioritization. + * @note Uses the GDTCOREvent customBytes property. + */ +@property(nonatomic) BOOL needsNetworkConnectionInfoPopulated; + +/** The network connection info as collected at the time of the event. + * @note Uses the GDTCOREvent customBytes property. + */ +@property(nullable, nonatomic) NSData *networkConnectionInfoData; + +/** Code that identifies the event to be sent to the CCT backend. + */ +@property(nullable, nonatomic) NSNumber *eventCode; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleDataTransportCCTSupport/README.md b/Pods/GoogleDataTransportCCTSupport/README.md index ab36632..d778205 100644 --- a/Pods/GoogleDataTransportCCTSupport/README.md +++ b/Pods/GoogleDataTransportCCTSupport/README.md @@ -1,12 +1,29 @@ -# Firebase iOS Open Source Development - [![Actions Status][gh-core-badge]][gh-actions] - [![Actions Status][gh-dynamiclinks-badge]][gh-actions] - [![Actions Status][gh-datatransport-badge]][gh-actions] - [![Actions Status][gh-storage-badge]][gh-actions] - [![Actions Status][gh-zip-badge]][gh-actions] - [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains all Firebase iOS SDK source except FirebaseAnalytics, +[![Version](https://img.shields.io/cocoapods/v/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![License](https://img.shields.io/cocoapods/l/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) +[![Platform](https://img.shields.io/cocoapods/p/Firebase.svg?style=flat)](https://cocoapods.org/pods/Firebase) + +[![Actions Status][gh-abtesting-badge]][gh-actions] +[![Actions Status][gh-auth-badge]][gh-actions] +[![Actions Status][gh-core-badge]][gh-actions] +[![Actions Status][gh-crashlytics-badge]][gh-actions] +[![Actions Status][gh-database-badge]][gh-actions] +[![Actions Status][gh-datatransport-badge]][gh-actions] +[![Actions Status][gh-dynamiclinks-badge]][gh-actions] +[![Actions Status][gh-firebasepod-badge]][gh-actions] +[![Actions Status][gh-firestore-badge]][gh-actions] +[![Actions Status][gh-functions-badge]][gh-actions] +[![Actions Status][gh-inappmessaging-badge]][gh-actions] +[![Actions Status][gh-interop-badge]][gh-actions] +[![Actions Status][gh-messaging-badge]][gh-actions] +[![Actions Status][gh-remoteconfig-badge]][gh-actions] +[![Actions Status][gh-storage-badge]][gh-actions] +[![Actions Status][gh-symbolcollision-badge]][gh-actions] +[![Actions Status][gh-zip-badge]][gh-actions] +[![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +# Firebase Apple Open Source Development + +This repository contains all Apple platform Firebase SDK source except FirebaseAnalytics, FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The @@ -72,12 +89,16 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least the following software: - * Xcode 10.1 (or later) + * Xcode 10.3 (or later) * CocoaPods 1.7.2 (or later) * [CocoaPods generate](https://github.com/square/cocoapods-generate) @@ -108,6 +129,10 @@ Firestore has a self contained Xcode project. See See [AddNewPod.md](AddNewPod.md). +### Managing Headers and Imports + +See [HeadersImports.md](HeadersImports.md). + ### Code Formatting To ensure that the code is formatted consistently, run the script @@ -119,8 +144,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -134,7 +159,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -165,18 +190,26 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database -To run the Database Integration tests, make your database authentication rules -[public](https://firebase.google.com/docs/database/security/quickstart). +The Firebase Database Integration tests can be run against a locally running Database Emulator +or against a production instance. + +To run against a local emulator instance, invoke `./scripts/run_database_emulator.sh start` before +running the integration test. + +To run against a production instance, provide a valid GoogleServices-Info.plist and copy it to +`Example/Database/App/GoogleService-Info.plist`. Your Security Rule must be set to +[public](https://firebase.google.com/docs/database/security/quickstart) while your tests are +running. ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -202,32 +235,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -257,8 +292,20 @@ Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). [gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-abtesting-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/abtesting/badge.svg +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg [gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-crashlytics-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/crashlytics/badge.svg +[gh-database-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/database/badge.svg [gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg [gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-functions-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/functions/badge.svg +[gh-inappmessaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/inappmessaging/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-remoteconfig-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/remoteconfig/badge.svg [gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg [gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m new file mode 100644 index 0000000..173a776 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m @@ -0,0 +1,1038 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +#import +#import +#import +#import +#import "GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h" +#import "GoogleUtilities/Common/GULLoggerCodes.h" + +#import + +// Implementations need to be typed before calling the implementation directly to cast the +// arguments and the return types correctly. Otherwise, it will crash the app. +typedef BOOL (*GULRealOpenURLSourceApplicationAnnotationIMP)( + id, SEL, GULApplication *, NSURL *, NSString *, id); + +typedef BOOL (*GULRealOpenURLOptionsIMP)( + id, SEL, GULApplication *, NSURL *, NSDictionary *); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wstrict-prototypes" +typedef void (*GULRealHandleEventsForBackgroundURLSessionIMP)( + id, SEL, GULApplication *, NSString *, void (^)()); +#pragma clang diagnostic pop + +// This is needed to for the library to be warning free on iOS versions < 8. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +typedef BOOL (*GULRealContinueUserActivityIMP)( + id, SEL, GULApplication *, NSUserActivity *, void (^)(NSArray *restorableObjects)); +#pragma clang diagnostic pop + +typedef void (*GULRealDidRegisterForRemoteNotificationsIMP)(id, SEL, GULApplication *, NSData *); + +typedef void (*GULRealDidFailToRegisterForRemoteNotificationsIMP)(id, + SEL, + GULApplication *, + NSError *); + +typedef void (*GULRealDidReceiveRemoteNotificationIMP)(id, SEL, GULApplication *, NSDictionary *); + +// TODO: Since we don't support iOS 7 anymore, see if we can remove the check below. +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +typedef void (*GULRealDidReceiveRemoteNotificationWithCompletionIMP)( + id, SEL, GULApplication *, NSDictionary *, void (^)(UIBackgroundFetchResult)); +#pragma clang diagnostic pop +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH + +typedef void (^GULAppDelegateInterceptorCallback)(id); + +// The strings below are the keys for associated objects. +static char const *const kGULRealIMPBySelectorKey = "GUL_realIMPBySelector"; +static char const *const kGULRealClassKey = "GUL_realClass"; + +static NSString *const kGULAppDelegateKeyPath = @"delegate"; + +static GULLoggerService kGULLoggerSwizzler = @"[GoogleUtilities/AppDelegateSwizzler]"; + +// Since Firebase SDKs also use this for app delegate proxying, in order to not be a breaking change +// we disable App Delegate proxying when either of these two flags are set to NO. + +/** Plist key that allows Firebase developers to disable App and Scene Delegate Proxying. */ +static NSString *const kGULFirebaseAppDelegateProxyEnabledPlistKey = + @"FirebaseAppDelegateProxyEnabled"; + +/** Plist key that allows developers not using Firebase to disable App and Scene Delegate Proxying. + */ +static NSString *const kGULGoogleUtilitiesAppDelegateProxyEnabledPlistKey = + @"GoogleUtilitiesAppDelegateProxyEnabled"; + +/** The prefix of the App Delegate. */ +static NSString *const kGULAppDelegatePrefix = @"GUL_"; + +/** The original instance of App Delegate. */ +static id gOriginalAppDelegate; + +/** The original App Delegate class */ +static Class gOriginalAppDelegateClass; + +/** The subclass of the original App Delegate. */ +static Class gAppDelegateSubclass; + +/** Remote notification methods selectors + * + * We have to opt out of referencing APNS related App Delegate methods directly to prevent + * an Apple review warning email about missing Push Notification Entitlement + * (like here: https://github.com/firebase/firebase-ios-sdk/issues/2807). From our experience, the + * warning is triggered when any of the symbols is present in the application sent to review, even + * if the code is never executed. Because GULAppDelegateSwizzler may be used by applications that + * are not using APNS we have to refer to the methods indirectly using selector constructed from + * string. + * + * NOTE: None of the methods is proxied unless it is explicitly requested by calling the method + * +[GULAppDelegateSwizzler proxyOriginalDelegateIncludingAPNSMethods] + */ +static NSString *const kGULDidRegisterForRemoteNotificationsSEL = + @"application:didRegisterForRemoteNotificationsWithDeviceToken:"; +static NSString *const kGULDidFailToRegisterForRemoteNotificationsSEL = + @"application:didFailToRegisterForRemoteNotificationsWithError:"; +static NSString *const kGULDidReceiveRemoteNotificationSEL = + @"application:didReceiveRemoteNotification:"; +static NSString *const kGULDidReceiveRemoteNotificationWithCompletionSEL = + @"application:didReceiveRemoteNotification:fetchCompletionHandler:"; + +/** + * This class is necessary to store the delegates in an NSArray without retaining them. + * [NSValue valueWithNonRetainedObject] also provides this functionality, but does not provide a + * zeroing pointer. This will cause EXC_BAD_ACCESS when trying to access the object after it is + * dealloced. Instead, this container stores a weak, zeroing reference to the object, which + * automatically is set to nil by the runtime when the object is dealloced. + */ +@interface GULZeroingWeakContainer : NSObject + +/** Stores a weak object. */ +@property(nonatomic, weak) id object; + +@end + +@implementation GULZeroingWeakContainer +@end + +@interface GULAppDelegateObserver : NSObject +@end + +@implementation GULAppDelegateObserver { + BOOL _isObserving; +} + ++ (GULAppDelegateObserver *)sharedInstance { + static GULAppDelegateObserver *instance; + static dispatch_once_t once; + dispatch_once(&once, ^{ + instance = [[GULAppDelegateObserver alloc] init]; + }); + return instance; +} + +- (void)observeUIApplication { + if (_isObserving) { + return; + } + [[GULAppDelegateSwizzler sharedApplication] + addObserver:self + forKeyPath:kGULAppDelegateKeyPath + options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld + context:nil]; + _isObserving = YES; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(NSDictionary *)change + context:(void *)context { + if ([keyPath isEqual:kGULAppDelegateKeyPath]) { + id newValue = change[NSKeyValueChangeNewKey]; + id oldValue = change[NSKeyValueChangeOldKey]; + if ([newValue isEqual:oldValue]) { + return; + } + // Free the stored app delegate instance because it has been changed to a different instance to + // avoid keeping it alive forever. + if ([oldValue isEqual:gOriginalAppDelegate]) { + gOriginalAppDelegate = nil; + // Remove the observer. Parse it to NSObject to avoid warning. + [[GULAppDelegateSwizzler sharedApplication] removeObserver:self + forKeyPath:kGULAppDelegateKeyPath]; + _isObserving = NO; + } + } +} + +@end + +@implementation GULAppDelegateSwizzler + +static dispatch_once_t sProxyAppDelegateOnceToken; +static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; + +#pragma mark - Public methods + ++ (BOOL)isAppDelegateProxyEnabled { + NSDictionary *infoDictionary = [NSBundle mainBundle].infoDictionary; + + id isFirebaseProxyEnabledPlistValue = infoDictionary[kGULFirebaseAppDelegateProxyEnabledPlistKey]; + id isGoogleProxyEnabledPlistValue = + infoDictionary[kGULGoogleUtilitiesAppDelegateProxyEnabledPlistKey]; + + // Enabled by default. + BOOL isFirebaseAppDelegateProxyEnabled = YES; + BOOL isGoogleUtilitiesAppDelegateProxyEnabled = YES; + + if ([isFirebaseProxyEnabledPlistValue isKindOfClass:[NSNumber class]]) { + isFirebaseAppDelegateProxyEnabled = [isFirebaseProxyEnabledPlistValue boolValue]; + } + + if ([isGoogleProxyEnabledPlistValue isKindOfClass:[NSNumber class]]) { + isGoogleUtilitiesAppDelegateProxyEnabled = [isGoogleProxyEnabledPlistValue boolValue]; + } + + // Only deactivate the proxy if it is explicitly disabled by app developers using either one of + // the plist flags. + return isFirebaseAppDelegateProxyEnabled && isGoogleUtilitiesAppDelegateProxyEnabled; +} + ++ (GULAppDelegateInterceptorID)registerAppDelegateInterceptor: + (id)interceptor { + NSAssert(interceptor, @"AppDelegateProxy cannot add nil interceptor"); + NSAssert([interceptor conformsToProtocol:@protocol(GULApplicationDelegate)], + @"AppDelegateProxy interceptor does not conform to UIApplicationDelegate"); + + if (!interceptor) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling000], + @"AppDelegateProxy cannot add nil interceptor."); + return nil; + } + if (![interceptor conformsToProtocol:@protocol(GULApplicationDelegate)]) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling001], + @"AppDelegateProxy interceptor does not conform to UIApplicationDelegate"); + return nil; + } + + // The ID should be the same given the same interceptor object. + NSString *interceptorID = [NSString stringWithFormat:@"%@%p", kGULAppDelegatePrefix, interceptor]; + if (!interceptorID.length) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling002], + @"AppDelegateProxy cannot create Interceptor ID."); + return nil; + } + GULZeroingWeakContainer *weakObject = [[GULZeroingWeakContainer alloc] init]; + weakObject.object = interceptor; + [GULAppDelegateSwizzler interceptors][interceptorID] = weakObject; + return interceptorID; +} + ++ (void)unregisterAppDelegateInterceptorWithID:(GULAppDelegateInterceptorID)interceptorID { + NSAssert(interceptorID, @"AppDelegateProxy cannot unregister nil interceptor ID."); + NSAssert(((NSString *)interceptorID).length != 0, + @"AppDelegateProxy cannot unregister empty interceptor ID."); + + if (!interceptorID) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling003], + @"AppDelegateProxy cannot unregister empty interceptor ID."); + return; + } + + GULZeroingWeakContainer *weakContainer = [GULAppDelegateSwizzler interceptors][interceptorID]; + if (!weakContainer.object) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling004], + @"AppDelegateProxy cannot unregister interceptor that was not registered. " + "Interceptor ID %@", + interceptorID); + return; + } + + [[GULAppDelegateSwizzler interceptors] removeObjectForKey:interceptorID]; +} + ++ (void)proxyOriginalDelegate { + if ([GULAppEnvironmentUtil isAppExtension]) { + return; + } + + dispatch_once(&sProxyAppDelegateOnceToken, ^{ + id originalDelegate = + [GULAppDelegateSwizzler sharedApplication].delegate; + [GULAppDelegateSwizzler proxyAppDelegate:originalDelegate]; + }); +} + ++ (void)proxyOriginalDelegateIncludingAPNSMethods { + if ([GULAppEnvironmentUtil isAppExtension]) { + return; + } + + [self proxyOriginalDelegate]; + + dispatch_once(&sProxyAppDelegateRemoteNotificationOnceToken, ^{ + id appDelegate = [GULAppDelegateSwizzler sharedApplication].delegate; + + NSMutableDictionary *realImplementationsBySelector = + [objc_getAssociatedObject(appDelegate, &kGULRealIMPBySelectorKey) mutableCopy]; + + [self proxyRemoteNotificationsMethodsWithAppDelegateSubClass:gAppDelegateSubclass + realClass:gOriginalAppDelegateClass + appDelegate:appDelegate + realImplementationsBySelector:realImplementationsBySelector]; + + objc_setAssociatedObject(appDelegate, &kGULRealIMPBySelectorKey, + [realImplementationsBySelector copy], OBJC_ASSOCIATION_RETAIN); + [self reassignAppDelegate]; + }); +} + +#pragma mark - Create proxy + ++ (GULApplication *)sharedApplication { + if ([GULAppEnvironmentUtil isAppExtension]) { + return nil; + } + id sharedApplication = nil; + Class uiApplicationClass = NSClassFromString(kGULApplicationClassName); + if (uiApplicationClass && + [uiApplicationClass respondsToSelector:(NSSelectorFromString(@"sharedApplication"))]) { + sharedApplication = [uiApplicationClass sharedApplication]; + } + return sharedApplication; +} + +#pragma mark - Override default methods + +/** Creates a new subclass of the class of the given object and sets the isa value of the given + * object to the new subclass. Additionally this copies methods to that new subclass that allow us + * to intercept UIApplicationDelegate methods. This is better known as isa swizzling. + * + * @param appDelegate The object to which you want to isa swizzle. This has to conform to the + * UIApplicationDelegate subclass. + * @return Returns the new subclass. + */ ++ (nullable Class)createSubclassWithObject:(id)appDelegate { + Class realClass = [appDelegate class]; + + // Create GUL__ + NSString *classNameWithPrefix = + [kGULAppDelegatePrefix stringByAppendingString:NSStringFromClass(realClass)]; + NSString *newClassName = + [NSString stringWithFormat:@"%@-%@", classNameWithPrefix, [NSUUID UUID].UUIDString]; + + if (NSClassFromString(newClassName)) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling005], + @"Cannot create a proxy for App Delegate. Subclass already exists. Original Class: " + @"%@, subclass: %@", + NSStringFromClass(realClass), newClassName); + return nil; + } + + // Register the new class as subclass of the real one. Do not allocate more than the real class + // size. + Class appDelegateSubClass = objc_allocateClassPair(realClass, newClassName.UTF8String, 0); + if (appDelegateSubClass == Nil) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling006], + @"Cannot create a proxy for App Delegate. Subclass already exists. Original Class: " + @"%@, subclass: Nil", + NSStringFromClass(realClass)); + return nil; + } + + NSMutableDictionary *realImplementationsBySelector = + [[NSMutableDictionary alloc] init]; + + // For application:continueUserActivity:restorationHandler: + SEL continueUserActivitySEL = @selector(application:continueUserActivity:restorationHandler:); + [self proxyDestinationSelector:continueUserActivitySEL + implementationsFromSourceSelector:continueUserActivitySEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + +#if TARGET_OS_IOS || TARGET_OS_TV + // Add the following methods from GULAppDelegate class, and store the real implementation so it + // can forward to the real one. + // For application:openURL:options: + SEL applicationOpenURLOptionsSEL = @selector(application:openURL:options:); + if ([appDelegate respondsToSelector:applicationOpenURLOptionsSEL]) { + // Only add the application:openURL:options: method if the original AppDelegate implements it. + // This fixes a bug if an app only implements application:openURL:sourceApplication:annotation: + // (if we add the `options` method, iOS sees that one exists and does not call the + // `sourceApplication` method, which in this case is the only one the app implements). + + [self proxyDestinationSelector:applicationOpenURLOptionsSEL + implementationsFromSourceSelector:applicationOpenURLOptionsSEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + } + + // For application:handleEventsForBackgroundURLSession:completionHandler: + SEL handleEventsForBackgroundURLSessionSEL = @selector(application: + handleEventsForBackgroundURLSession:completionHandler:); + [self proxyDestinationSelector:handleEventsForBackgroundURLSessionSEL + implementationsFromSourceSelector:handleEventsForBackgroundURLSessionSEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; +#endif // TARGET_OS_IOS || TARGET_OS_TV + +#if TARGET_OS_IOS + // For application:openURL:sourceApplication:annotation: + SEL openURLSourceApplicationAnnotationSEL = @selector(application: + openURL:sourceApplication:annotation:); + + [self proxyDestinationSelector:openURLSourceApplicationAnnotationSEL + implementationsFromSourceSelector:openURLSourceApplicationAnnotationSEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; +#endif // TARGET_OS_IOS + + // Override the description too so the custom class name will not show up. + [GULAppDelegateSwizzler addInstanceMethodWithDestinationSelector:@selector(description) + withImplementationFromSourceSelector:@selector(fakeDescription) + fromClass:[self class] + toClass:appDelegateSubClass]; + + // Store original implementations to a fake property of the original delegate. + objc_setAssociatedObject(appDelegate, &kGULRealIMPBySelectorKey, + [realImplementationsBySelector copy], OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject(appDelegate, &kGULRealClassKey, realClass, + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + // The subclass size has to be exactly the same size with the original class size. The subclass + // cannot have more ivars/properties than its superclass since it will cause an offset in memory + // that can lead to overwriting the isa of an object in the next frame. + if (class_getInstanceSize(realClass) != class_getInstanceSize(appDelegateSubClass)) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling007], + @"Cannot create subclass of App Delegate, because the created subclass is not the " + @"same size. %@", + NSStringFromClass(realClass)); + NSAssert(NO, @"Classes must be the same size to swizzle isa"); + return nil; + } + + // Make the newly created class to be the subclass of the real App Delegate class. + objc_registerClassPair(appDelegateSubClass); + if (object_setClass(appDelegate, appDelegateSubClass)) { + GULLogDebug(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling008], + @"Successfully created App Delegate Proxy automatically. To disable the " + @"proxy, set the flag %@ to NO (Boolean) in the Info.plist", + [GULAppDelegateSwizzler correctAppDelegateProxyKey]); + } + + return appDelegateSubClass; +} + ++ (void)proxyRemoteNotificationsMethodsWithAppDelegateSubClass:(Class)appDelegateSubClass + realClass:(Class)realClass + appDelegate:(id)appDelegate + realImplementationsBySelector: + (NSMutableDictionary *)realImplementationsBySelector { + if (realClass == nil || appDelegateSubClass == nil || appDelegate == nil || + realImplementationsBySelector == nil) { + // The App Delegate has not been swizzled. + return; + } + + // For application:didRegisterForRemoteNotificationsWithDeviceToken: + SEL didRegisterForRemoteNotificationsSEL = + NSSelectorFromString(kGULDidRegisterForRemoteNotificationsSEL); + SEL didRegisterForRemoteNotificationsDonorSEL = @selector(application: + donor_didRegisterForRemoteNotificationsWithDeviceToken:); + + [self proxyDestinationSelector:didRegisterForRemoteNotificationsSEL + implementationsFromSourceSelector:didRegisterForRemoteNotificationsDonorSEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + + // For application:didFailToRegisterForRemoteNotificationsWithError: + SEL didFailToRegisterForRemoteNotificationsSEL = + NSSelectorFromString(kGULDidFailToRegisterForRemoteNotificationsSEL); + SEL didFailToRegisterForRemoteNotificationsDonorSEL = @selector(application: + donor_didFailToRegisterForRemoteNotificationsWithError:); + + [self proxyDestinationSelector:didFailToRegisterForRemoteNotificationsSEL + implementationsFromSourceSelector:didFailToRegisterForRemoteNotificationsDonorSEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + + // For application:didReceiveRemoteNotification: + SEL didReceiveRemoteNotificationSEL = NSSelectorFromString(kGULDidReceiveRemoteNotificationSEL); + SEL didReceiveRemoteNotificationDonotSEL = @selector(application: + donor_didReceiveRemoteNotification:); + + [self proxyDestinationSelector:didReceiveRemoteNotificationSEL + implementationsFromSourceSelector:didReceiveRemoteNotificationDonotSEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + + // For application:didReceiveRemoteNotification:fetchCompletionHandler: +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH + if ([GULAppEnvironmentUtil isIOS7OrHigher]) { + SEL didReceiveRemoteNotificationWithCompletionSEL = + NSSelectorFromString(kGULDidReceiveRemoteNotificationWithCompletionSEL); + SEL didReceiveRemoteNotificationWithCompletionDonorSEL = + @selector(application:donor_didReceiveRemoteNotification:fetchCompletionHandler:); + if ([appDelegate respondsToSelector:didReceiveRemoteNotificationWithCompletionSEL]) { + // Only add the application:didReceiveRemoteNotification:fetchCompletionHandler: method if + // the original AppDelegate implements it. + // This fixes a bug if an app only implements application:didReceiveRemoteNotification: + // (if we add the method with completion, iOS sees that one exists and does not call + // the method without the completion, which in this case is the only one the app implements). + + [self proxyDestinationSelector:didReceiveRemoteNotificationWithCompletionSEL + implementationsFromSourceSelector:didReceiveRemoteNotificationWithCompletionDonorSEL + fromClass:[GULAppDelegateSwizzler class] + toClass:appDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + } + } +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH +} + +/// We have to do this to invalidate the cache that caches the original respondsToSelector of +/// openURL handlers. Without this, it won't call the default implementations because the system +/// checks and caches them. +/// Register KVO only once. Otherwise, the observing method will be called as many times as +/// being registered. ++ (void)reassignAppDelegate { +#if !TARGET_OS_WATCH + id delegate = [self sharedApplication].delegate; + [self sharedApplication].delegate = nil; + [self sharedApplication].delegate = delegate; + gOriginalAppDelegate = delegate; + [[GULAppDelegateObserver sharedInstance] observeUIApplication]; +#endif +} + +#pragma mark - Helper methods + ++ (GULMutableDictionary *)interceptors { + static dispatch_once_t onceToken; + static GULMutableDictionary *sInterceptors; + dispatch_once(&onceToken, ^{ + sInterceptors = [[GULMutableDictionary alloc] init]; + }); + return sInterceptors; +} + ++ (nullable NSValue *)originalImplementationForSelector:(SEL)selector object:(id)object { + NSDictionary *realImplementationBySelector = + objc_getAssociatedObject(object, &kGULRealIMPBySelectorKey); + return realImplementationBySelector[NSStringFromSelector(selector)]; +} + ++ (void)proxyDestinationSelector:(SEL)destinationSelector + implementationsFromSourceSelector:(SEL)sourceSelector + fromClass:(Class)sourceClass + toClass:(Class)destinationClass + realClass:(Class)realClass + storeDestinationImplementationTo: + (NSMutableDictionary *)destinationImplementationsBySelector { + [self addInstanceMethodWithDestinationSelector:destinationSelector + withImplementationFromSourceSelector:sourceSelector + fromClass:sourceClass + toClass:destinationClass]; + IMP sourceImplementation = + [GULAppDelegateSwizzler implementationOfMethodSelector:destinationSelector + fromClass:realClass]; + NSValue *sourceImplementationPointer = [NSValue valueWithPointer:sourceImplementation]; + + NSString *destinationSelectorString = NSStringFromSelector(destinationSelector); + destinationImplementationsBySelector[destinationSelectorString] = sourceImplementationPointer; +} + +/** Copies a method identified by the methodSelector from one class to the other. After this method + * is called, performing [toClassInstance methodSelector] will be similar to calling + * [fromClassInstance methodSelector]. This method does nothing if toClass already has a method + * identified by methodSelector. + * + * @param methodSelector The SEL that identifies both the method on the fromClass as well as the + * one on the toClass. + * @param fromClass The class from which a method is sourced. + * @param toClass The class to which the method is added. If the class already has a method with + * the same selector, this has no effect. + */ ++ (void)addInstanceMethodWithSelector:(SEL)methodSelector + fromClass:(Class)fromClass + toClass:(Class)toClass { + [self addInstanceMethodWithDestinationSelector:methodSelector + withImplementationFromSourceSelector:methodSelector + fromClass:fromClass + toClass:toClass]; +} + +/** Copies a method identified by the sourceSelector from the fromClass as a method for the + * destinationSelector on the toClass. After this method is called, performing + * [toClassInstance destinationSelector] will be similar to calling + * [fromClassInstance sourceSelector]. This method does nothing if toClass already has a method + * identified by destinationSelector. + * + * @param destinationSelector The SEL that identifies the method on the toClass. + * @param sourceSelector The SEL that identifies the method on the fromClass. + * @param fromClass The class from which a method is sourced. + * @param toClass The class to which the method is added. If the class already has a method with + * the same selector, this has no effect. + */ ++ (void)addInstanceMethodWithDestinationSelector:(SEL)destinationSelector + withImplementationFromSourceSelector:(SEL)sourceSelector + fromClass:(Class)fromClass + toClass:(Class)toClass { + Method method = class_getInstanceMethod(fromClass, sourceSelector); + IMP methodIMP = method_getImplementation(method); + const char *types = method_getTypeEncoding(method); + if (!class_addMethod(toClass, destinationSelector, methodIMP, types)) { + GULLogWarning(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling009], + @"Cannot copy method to destination selector %@ as it already exists", + NSStringFromSelector(destinationSelector)); + } +} + +/** Gets the IMP of the instance method on the class identified by the selector. + * + * @param selector The selector of which the IMP is to be fetched. + * @param aClass The class from which the IMP is to be fetched. + * @return The IMP of the instance method identified by selector and aClass. + */ ++ (IMP)implementationOfMethodSelector:(SEL)selector fromClass:(Class)aClass { + Method aMethod = class_getInstanceMethod(aClass, selector); + return method_getImplementation(aMethod); +} + +/** Enumerates through all the interceptors and if they respond to a given selector, executes a + * GULAppDelegateInterceptorCallback with the interceptor. + * + * @param methodSelector The SEL to check if an interceptor responds to. + * @param callback the GULAppDelegateInterceptorCallback. + */ ++ (void)notifyInterceptorsWithMethodSelector:(SEL)methodSelector + callback:(GULAppDelegateInterceptorCallback)callback { + if (!callback) { + return; + } + + NSDictionary *interceptors = [GULAppDelegateSwizzler interceptors].dictionary; + [interceptors enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + GULZeroingWeakContainer *interceptorContainer = obj; + id interceptor = interceptorContainer.object; + if (!interceptor) { + GULLogWarning( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", (long)kGULSwizzlerMessageCodeAppDelegateSwizzling010], + @"AppDelegateProxy cannot find interceptor with ID %@. Removing the interceptor.", key); + [[GULAppDelegateSwizzler interceptors] removeObjectForKey:key]; + return; + } + if ([interceptor respondsToSelector:methodSelector]) { + callback(interceptor); + } + }]; +} + +// The methods below are donor methods which are added to the dynamic subclass of the App Delegate. +// They are called within the scope of the real App Delegate so |self| does not refer to the +// GULAppDelegateSwizzler instance but the real App Delegate instance. + +#pragma mark - [Donor Methods] Overridden instance description method + +- (NSString *)fakeDescription { + Class realClass = objc_getAssociatedObject(self, &kGULRealClassKey); + return [NSString stringWithFormat:@"<%@: %p>", realClass, self]; +} + +#pragma mark - [Donor Methods] URL overridden handler methods +#if TARGET_OS_IOS || TARGET_OS_TV + +- (BOOL)application:(GULApplication *)application + openURL:(NSURL *)url + options:(NSDictionary *)options { + SEL methodSelector = @selector(application:openURL:options:); + // Call the real implementation if the real App Delegate has any. + NSValue *openURLIMPPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealOpenURLOptionsIMP openURLOptionsIMP = [openURLIMPPointer pointerValue]; + + __block BOOL returnedValue = NO; + +// This is needed to for the library to be warning free on iOS versions < 9. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + returnedValue |= [interceptor application:application + openURL:url + options:options]; + }]; +#pragma clang diagnostic pop + if (openURLOptionsIMP) { + returnedValue |= openURLOptionsIMP(self, methodSelector, application, url, options); + } + return returnedValue; +} + +#endif // TARGET_OS_IOS || TARGET_OS_TV + +#if TARGET_OS_IOS + +- (BOOL)application:(GULApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation { + SEL methodSelector = @selector(application:openURL:sourceApplication:annotation:); + + // Call the real implementation if the real App Delegate has any. + NSValue *openURLSourceAppAnnotationIMPPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealOpenURLSourceApplicationAnnotationIMP openURLSourceApplicationAnnotationIMP = + [openURLSourceAppAnnotationIMPPointer pointerValue]; + + __block BOOL returnedValue = NO; + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + returnedValue |= [interceptor application:application + openURL:url + sourceApplication:sourceApplication + annotation:annotation]; +#pragma clang diagnostic pop + }]; + if (openURLSourceApplicationAnnotationIMP) { + returnedValue |= openURLSourceApplicationAnnotationIMP(self, methodSelector, application, url, + sourceApplication, annotation); + } + return returnedValue; +} + +#endif // TARGET_OS_IOS + +#pragma mark - [Donor Methods] Network overridden handler methods + +#if TARGET_OS_IOS || TARGET_OS_TV + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wstrict-prototypes" +- (void)application:(GULApplication *)application + handleEventsForBackgroundURLSession:(NSString *)identifier + completionHandler:(void (^)())completionHandler API_AVAILABLE(ios(7.0)) { +#pragma clang diagnostic pop + SEL methodSelector = @selector(application: + handleEventsForBackgroundURLSession:completionHandler:); + NSValue *handleBackgroundSessionPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealHandleEventsForBackgroundURLSessionIMP handleBackgroundSessionIMP = + [handleBackgroundSessionPointer pointerValue]; + + // Notify interceptors. + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + [interceptor application:application + handleEventsForBackgroundURLSession:identifier + completionHandler:completionHandler]; + }]; + // Call the real implementation if the real App Delegate has any. + if (handleBackgroundSessionIMP) { + handleBackgroundSessionIMP(self, methodSelector, application, identifier, completionHandler); + } +} + +#endif // TARGET_OS_IOS || TARGET_OS_TV + +#pragma mark - [Donor Methods] User Activities overridden handler methods + +// This is needed to for the library to be warning free on iOS versions < 8. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +- (BOOL)application:(GULApplication *)application + continueUserActivity:(NSUserActivity *)userActivity + restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler { + SEL methodSelector = @selector(application:continueUserActivity:restorationHandler:); + NSValue *continueUserActivityIMPPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealContinueUserActivityIMP continueUserActivityIMP = + continueUserActivityIMPPointer.pointerValue; + + __block BOOL returnedValue = NO; +#if !TARGET_OS_WATCH + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + returnedValue |= [interceptor application:application + continueUserActivity:userActivity + restorationHandler:restorationHandler]; + }]; +#endif + // Call the real implementation if the real App Delegate has any. + if (continueUserActivityIMP) { + returnedValue |= continueUserActivityIMP(self, methodSelector, application, userActivity, + restorationHandler); + } + return returnedValue; +} +#pragma clang diagnostic pop + +#pragma mark - [Donor Methods] Remote Notifications + +- (void)application:(GULApplication *)application + donor_didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { + SEL methodSelector = NSSelectorFromString(kGULDidRegisterForRemoteNotificationsSEL); + + NSValue *didRegisterForRemoteNotificationsIMPPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealDidRegisterForRemoteNotificationsIMP didRegisterForRemoteNotificationsIMP = + [didRegisterForRemoteNotificationsIMPPointer pointerValue]; + + // Notify interceptors. + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + NSInvocation *invocation = [GULAppDelegateSwizzler + appDelegateInvocationForSelector:methodSelector]; + [invocation setTarget:interceptor]; + [invocation setSelector:methodSelector]; + [invocation setArgument:(void *)(&application) atIndex:2]; + [invocation setArgument:(void *)(&deviceToken) atIndex:3]; + [invocation invoke]; + }]; + // Call the real implementation if the real App Delegate has any. + if (didRegisterForRemoteNotificationsIMP) { + didRegisterForRemoteNotificationsIMP(self, methodSelector, application, deviceToken); + } +} + +- (void)application:(GULApplication *)application + donor_didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { + SEL methodSelector = NSSelectorFromString(kGULDidFailToRegisterForRemoteNotificationsSEL); + NSValue *didFailToRegisterForRemoteNotificationsIMPPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealDidFailToRegisterForRemoteNotificationsIMP didFailToRegisterForRemoteNotificationsIMP = + [didFailToRegisterForRemoteNotificationsIMPPointer pointerValue]; + + // Notify interceptors. + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + NSInvocation *invocation = [GULAppDelegateSwizzler + appDelegateInvocationForSelector:methodSelector]; + [invocation setTarget:interceptor]; + [invocation setSelector:methodSelector]; + [invocation setArgument:(void *)(&application) atIndex:2]; + [invocation setArgument:(void *)(&error) atIndex:3]; + [invocation invoke]; + }]; + // Call the real implementation if the real App Delegate has any. + if (didFailToRegisterForRemoteNotificationsIMP) { + didFailToRegisterForRemoteNotificationsIMP(self, methodSelector, application, error); + } +} + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +- (void)application:(GULApplication *)application + donor_didReceiveRemoteNotification:(NSDictionary *)userInfo + fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { + SEL methodSelector = NSSelectorFromString(kGULDidReceiveRemoteNotificationWithCompletionSEL); + NSValue *didReceiveRemoteNotificationWithCompletionIMPPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealDidReceiveRemoteNotificationWithCompletionIMP + didReceiveRemoteNotificationWithCompletionIMP = + [didReceiveRemoteNotificationWithCompletionIMPPointer pointerValue]; + + // Notify interceptors. + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + NSInvocation *invocation = [GULAppDelegateSwizzler + appDelegateInvocationForSelector:methodSelector]; + [invocation setTarget:interceptor]; + [invocation setSelector:methodSelector]; + [invocation setArgument:(void *)(&application) atIndex:2]; + [invocation setArgument:(void *)(&userInfo) atIndex:3]; + [invocation setArgument:(void *)(&completionHandler) atIndex:4]; + [invocation invoke]; + }]; + // Call the real implementation if the real App Delegate has any. + if (didReceiveRemoteNotificationWithCompletionIMP) { + didReceiveRemoteNotificationWithCompletionIMP(self, methodSelector, application, userInfo, + completionHandler); + } +} +#pragma clang diagnostic pop +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH + +- (void)application:(GULApplication *)application + donor_didReceiveRemoteNotification:(NSDictionary *)userInfo { + SEL methodSelector = NSSelectorFromString(kGULDidReceiveRemoteNotificationSEL); + NSValue *didReceiveRemoteNotificationIMPPointer = + [GULAppDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULRealDidReceiveRemoteNotificationIMP didReceiveRemoteNotificationIMP = + [didReceiveRemoteNotificationIMPPointer pointerValue]; + + // Notify interceptors. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [GULAppDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + NSInvocation *invocation = [GULAppDelegateSwizzler + appDelegateInvocationForSelector:methodSelector]; + [invocation setTarget:interceptor]; + [invocation setSelector:methodSelector]; + [invocation setArgument:(void *)(&application) atIndex:2]; + [invocation setArgument:(void *)(&userInfo) atIndex:3]; + [invocation invoke]; + }]; +#pragma clang diagnostic pop + // Call the real implementation if the real App Delegate has any. + if (didReceiveRemoteNotificationIMP) { + didReceiveRemoteNotificationIMP(self, methodSelector, application, userInfo); + } +} + ++ (nullable NSInvocation *)appDelegateInvocationForSelector:(SEL)selector { + struct objc_method_description methodDescription = + protocol_getMethodDescription(@protocol(GULApplicationDelegate), selector, NO, YES); + if (methodDescription.types == NULL) { + return nil; + } + + NSMethodSignature *signature = [NSMethodSignature signatureWithObjCTypes:methodDescription.types]; + return [NSInvocation invocationWithMethodSignature:signature]; +} + ++ (void)proxyAppDelegate:(id)appDelegate { + if (![appDelegate conformsToProtocol:@protocol(GULApplicationDelegate)]) { + GULLogNotice( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzlingInvalidAppDelegate], + @"App Delegate does not conform to UIApplicationDelegate protocol. %@", + [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]); + return; + } + + id originalDelegate = appDelegate; + // Do not create a subclass if it is not enabled. + if (![GULAppDelegateSwizzler isAppDelegateProxyEnabled]) { + GULLogNotice(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling011], + @"App Delegate Proxy is disabled. %@", + [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]); + return; + } + // Do not accept nil delegate. + if (!originalDelegate) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling012], + @"Cannot create App Delegate Proxy because App Delegate instance is nil. %@", + [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]); + return; + } + + @try { + gOriginalAppDelegateClass = [originalDelegate class]; + gAppDelegateSubclass = [self createSubclassWithObject:originalDelegate]; + [self reassignAppDelegate]; + } @catch (NSException *exception) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeAppDelegateSwizzling013], + @"Cannot create App Delegate Proxy. %@", + [GULAppDelegateSwizzler correctAlternativeWhenAppDelegateProxyNotCreated]); + return; + } +} + +#pragma mark - Methods to print correct debug logs + ++ (NSString *)correctAppDelegateProxyKey { + return NSClassFromString(@"FIRCore") ? kGULFirebaseAppDelegateProxyEnabledPlistKey + : kGULGoogleUtilitiesAppDelegateProxyEnabledPlistKey; +} + ++ (NSString *)correctAlternativeWhenAppDelegateProxyNotCreated { + return NSClassFromString(@"FIRCore") + ? @"To log deep link campaigns manually, call the methods in " + @"FIRAnalytics+AppDelegate.h." + : @""; +} + +#pragma mark - Private Methods for Testing + ++ (void)clearInterceptors { + [[self interceptors] removeAllObjects]; +} + ++ (void)resetProxyOriginalDelegateOnceToken { + sProxyAppDelegateOnceToken = 0; + sProxyAppDelegateRemoteNotificationOnceToken = 0; +} + ++ (id)originalDelegate { + return gOriginalAppDelegate; +} + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h new file mode 100644 index 0000000..d7ebd86 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h @@ -0,0 +1,55 @@ +/* + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import +#import + +@class GULApplication; + +NS_ASSUME_NONNULL_BEGIN + +@interface GULAppDelegateSwizzler () + +/** ISA Swizzles the given appDelegate as the original app delegate would be. + * + * @param appDelegate The object that needs to be isa swizzled. This should conform to the + * application delegate protocol. + */ ++ (void)proxyAppDelegate:(id)appDelegate; + +/** Returns a dictionary containing interceptor IDs mapped to a GULZeroingWeakContainer. + * + * @return A dictionary of the form {NSString : GULZeroingWeakContainer}, where the NSString is + * the interceptorID. + */ ++ (GULMutableDictionary *)interceptors; + +/** Deletes all the registered interceptors. */ ++ (void)clearInterceptors; + +/** Resets the token that prevents the app delegate proxy from being isa swizzled multiple times. */ ++ (void)resetProxyOriginalDelegateOnceToken; + +/** Returns the original app delegate that was proxied. + * + * @return The original app delegate instance that was proxied. + */ ++ (id)originalDelegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h new file mode 100644 index 0000000..c1b2d6e --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h @@ -0,0 +1,107 @@ +/* + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NSString *const GULAppDelegateInterceptorID; + +/** This class contains methods that isa swizzle the app delegate. */ +@interface GULAppDelegateSwizzler : NSProxy + +/** Registers an app delegate interceptor whose methods will be invoked as they're invoked on the + * original app delegate. + * + * @param interceptor An instance of a class that conforms to the application delegate protocol. + * The interceptor is NOT retained. + * @return A unique GULAppDelegateInterceptorID if interceptor was successfully registered; nil + * if it fails. + */ ++ (nullable GULAppDelegateInterceptorID)registerAppDelegateInterceptor: + (id)interceptor; + +/** Unregisters an interceptor with the given ID if it exists. + * + * @param interceptorID The object that was generated when the interceptor was registered. + */ ++ (void)unregisterAppDelegateInterceptorWithID:(GULAppDelegateInterceptorID)interceptorID; + +/** This method ensures that the original app delegate has been proxied. Call this before + * registering your interceptor. This method is safe to call multiple times (but it only proxies + * the app delegate once). + * + * This method doesn't proxy APNS related methods: + * @code + * - application:didRegisterForRemoteNotificationsWithDeviceToken: + * - application:didFailToRegisterForRemoteNotificationsWithError: + * - application:didReceiveRemoteNotification:fetchCompletionHandler: + * - application:didReceiveRemoteNotification: + * @endcode + * + * To proxy these methods use +[GULAppDelegateSwizzler + * proxyOriginalDelegateIncludingAPNSMethods]. The methods have to be proxied separately to + * avoid potential warnings from Apple review about missing Push Notification Entitlement (e.g. + * https://github.com/firebase/firebase-ios-sdk/issues/2807) + * + * The method has no effect for extensions. + * + * @see proxyOriginalDelegateIncludingAPNSMethods + */ ++ (void)proxyOriginalDelegate; + +/** This method ensures that the original app delegate has been proxied including APNS related + * methods. Call this before registering your interceptor. This method is safe to call multiple + * times (but it only proxies the app delegate once) or + * after +[GULAppDelegateSwizzler proxyOriginalDelegate] + * + * This method calls +[GULAppDelegateSwizzler proxyOriginalDelegate] under the hood. + * After calling this method the following App Delegate methods will be proxied in addition to + * the methods proxied by proxyOriginalDelegate: + * @code + * - application:didRegisterForRemoteNotificationsWithDeviceToken: + * - application:didFailToRegisterForRemoteNotificationsWithError: + * - application:didReceiveRemoteNotification:fetchCompletionHandler: + * - application:didReceiveRemoteNotification: + * @endcode + * + * The method has no effect for extensions. + * + * @see proxyOriginalDelegate + */ ++ (void)proxyOriginalDelegateIncludingAPNSMethods; + +/** Indicates whether app delegate proxy is explicitly disabled or enabled. Enabled by default. + * + * @return YES if AppDelegateProxy is Enabled, NO otherwise. + */ ++ (BOOL)isAppDelegateProxyEnabled; + +/** Returns the current sharedApplication. + * + * @return the current application instance if in an app, or nil if in extension or if it doesn't + * exist. + */ ++ (nullable GULApplication *)sharedApplication; + +/** Do not initialize this class. */ +- (instancetype)init NS_UNAVAILABLE; + +NS_ASSUME_NONNULL_END + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h new file mode 100644 index 0000000..8067212 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h @@ -0,0 +1,50 @@ +/* + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_TV + +#import + +#define GULApplication UIApplication +#define GULApplicationDelegate UIApplicationDelegate +#define GULUserActivityRestoring UIUserActivityRestoring + +static NSString *const kGULApplicationClassName = @"UIApplication"; + +#elif TARGET_OS_OSX + +#import + +#define GULApplication NSApplication +#define GULApplicationDelegate NSApplicationDelegate +#define GULUserActivityRestoring NSUserActivityRestoring + +static NSString *const kGULApplicationClassName = @"NSApplication"; + +#elif TARGET_OS_WATCH + +#import + +// We match the according watchOS API but swizzling should not work in watch +#define GULApplication WKExtension +#define GULApplicationDelegate WKExtensionDelegate +#define GULUserActivityRestoring NSUserActivityRestoring + +static NSString *const kGULApplicationClassName = @"WKExtension"; + +#endif diff --git a/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h b/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h new file mode 100644 index 0000000..053ce84 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h @@ -0,0 +1,56 @@ +/* + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +typedef NS_ENUM(NSInteger, GULSwizzlerMessageCode) { + // App Delegate Swizzling. + kGULSwizzlerMessageCodeAppDelegateSwizzling000 = 1000, // I-SWZ001000 + kGULSwizzlerMessageCodeAppDelegateSwizzling001 = 1001, // I-SWZ001001 + kGULSwizzlerMessageCodeAppDelegateSwizzling002 = 1002, // I-SWZ001002 + kGULSwizzlerMessageCodeAppDelegateSwizzling003 = 1003, // I-SWZ001003 + kGULSwizzlerMessageCodeAppDelegateSwizzling004 = 1004, // I-SWZ001004 + kGULSwizzlerMessageCodeAppDelegateSwizzling005 = 1005, // I-SWZ001005 + kGULSwizzlerMessageCodeAppDelegateSwizzling006 = 1006, // I-SWZ001006 + kGULSwizzlerMessageCodeAppDelegateSwizzling007 = 1007, // I-SWZ001007 + kGULSwizzlerMessageCodeAppDelegateSwizzling008 = 1008, // I-SWZ001008 + kGULSwizzlerMessageCodeAppDelegateSwizzling009 = 1009, // I-SWZ001009 + kGULSwizzlerMessageCodeAppDelegateSwizzling010 = 1010, // I-SWZ001010 + kGULSwizzlerMessageCodeAppDelegateSwizzling011 = 1011, // I-SWZ001011 + kGULSwizzlerMessageCodeAppDelegateSwizzling012 = 1012, // I-SWZ001012 + kGULSwizzlerMessageCodeAppDelegateSwizzling013 = 1013, // I-SWZ001013 + kGULSwizzlerMessageCodeAppDelegateSwizzlingInvalidAppDelegate = 1014, // I-SWZ001014 + + // Scene Delegate Swizzling. + kGULSwizzlerMessageCodeSceneDelegateSwizzling000 = 1100, // I-SWZ001100 + kGULSwizzlerMessageCodeSceneDelegateSwizzling001 = 1101, // I-SWZ001101 + kGULSwizzlerMessageCodeSceneDelegateSwizzling002 = 1102, // I-SWZ001102 + kGULSwizzlerMessageCodeSceneDelegateSwizzling003 = 1103, // I-SWZ001103 + kGULSwizzlerMessageCodeSceneDelegateSwizzling004 = 1104, // I-SWZ001104 + kGULSwizzlerMessageCodeSceneDelegateSwizzling005 = 1105, // I-SWZ001105 + kGULSwizzlerMessageCodeSceneDelegateSwizzling006 = 1106, // I-SWZ001106 + kGULSwizzlerMessageCodeSceneDelegateSwizzling007 = 1107, // I-SWZ001107 + kGULSwizzlerMessageCodeSceneDelegateSwizzling008 = 1108, // I-SWZ001108 + kGULSwizzlerMessageCodeSceneDelegateSwizzling009 = 1109, // I-SWZ001109 + kGULSwizzlerMessageCodeSceneDelegateSwizzling010 = 1110, // I-SWZ001110 + kGULSwizzlerMessageCodeSceneDelegateSwizzling011 = 1111, // I-SWZ001111 + kGULSwizzlerMessageCodeSceneDelegateSwizzling012 = 1112, // I-SWZ001112 + kGULSwizzlerMessageCodeSceneDelegateSwizzling013 = 1113, // I-SWZ001113 + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate = 1114, // I-SWZ001114 + + // Method Swizzling. + kGULSwizzlerMessageCodeMethodSwizzling000 = 2000, // I-SWZ002000 +}; diff --git a/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m b/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m index ebfb808..25d5d19 100644 --- a/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m +++ b/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m @@ -23,7 +23,7 @@ + (nullable id)unarchivedObjectOfClasses:(NSSet *)classes error:(NSError **)outError { id object; #if __has_builtin(__builtin_available) - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *)) { object = [NSKeyedUnarchiver unarchivedObjectOfClasses:classes fromData:data error:outError]; } else #endif // __has_builtin(__builtin_available) @@ -62,7 +62,7 @@ + (nullable id)unarchivedObjectOfClass:(Class)class + (nullable NSData *)archivedDataWithRootObject:(id)object error:(NSError **)outError { NSData *archiveData; #if __has_builtin(__builtin_available) - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *)) { archiveData = [NSKeyedArchiver archivedDataWithRootObject:object requiringSecureCoding:YES error:outError]; diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h b/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULKeychainStorage.h similarity index 88% rename from Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h rename to Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULKeychainStorage.h index 5548e3e..dc01a83 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h +++ b/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULKeychainStorage.h @@ -21,7 +21,15 @@ NS_ASSUME_NONNULL_BEGIN /// The class provides a convenient abstraction on top of the iOS Keychain API to save data. -@interface FIRSecureStorage : NSObject +@interface GULKeychainStorage : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/** Initializes the keychain storage with Keychain Service name. + * @param service A Keychain Service name that will be used to store and retrieve objects. See also + * `kSecAttrService`. + */ +- (instancetype)initWithService:(NSString *)service; /** * Get an object by key. diff --git a/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULKeychainUtils.h b/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULKeychainUtils.h new file mode 100644 index 0000000..de4bef2 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULKeychainUtils.h @@ -0,0 +1,61 @@ +/* + * Copyright 2019 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +FOUNDATION_EXPORT NSString *const kGULKeychainUtilsErrorDomain; + +/// Helper functions to access Keychain. +@interface GULKeychainUtils : NSObject + +/** Fetches a keychain item data matching to the provided query. + * @param query A dictionary with Keychain query parameters. See docs for `SecItemCopyMatching` for + * details. + * @param outError A pointer to `NSError` instance or `NULL`. The instance at `outError` will be + * assigned with an error if there is. + * @returns Data for the first Keychain Item matching the provided query or `nil` if there is not + * such an item (`outError` will be `nil` in this case) or an error occurred. + */ ++ (nullable NSData *)getItemWithQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError; + +/** Stores data to a Keychain Item matching to the provided query. An existing Keychain Item + * matching the query parameters will be updated or a new will be created. + * @param item A Keychain Item data to store. + * @param query A dictionary with Keychain query parameters. See docs for `SecItemAdd` and + * `SecItemUpdate` for details. + * @param outError A pointer to `NSError` instance or `NULL`. The instance at `outError` will be + * assigned with an error if there is. + * @returns `YES` when data was successfully stored, `NO` otherwise. + */ ++ (BOOL)setItem:(NSData *)item + withQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError; + +/** Removes a Keychain Item matching to the provided query. + * @param query A dictionary with Keychain query parameters. See docs for `SecItemDelete` for + * details. + * @param outError A pointer to `NSError` instance or `NULL`. The instance at `outError` will be + * assigned with an error if there is. + * @returns `YES` if the item was removed successfully or doesn't exist, `NO` otherwise. + */ ++ (BOOL)removeItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nullable)outError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m b/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m similarity index 58% rename from Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m rename to Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m index 543e848..3777724 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m +++ b/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FIRSecureStorage.h" +#import #import #if __has_include() @@ -23,32 +23,32 @@ #import "FBLPromises.h" #endif -#import "FIRInstallationsErrorUtil.h" -#import "FIRInstallationsKeychainUtils.h" +#import +#import -@interface FIRSecureStorage () +@interface GULKeychainStorage () @property(nonatomic, readonly) dispatch_queue_t keychainQueue; @property(nonatomic, readonly) dispatch_queue_t inMemoryCacheQueue; @property(nonatomic, readonly) NSString *service; @property(nonatomic, readonly) NSCache> *inMemoryCache; @end -@implementation FIRSecureStorage +@implementation GULKeychainStorage -- (instancetype)init { +- (instancetype)initWithService:(NSString *)service { NSCache *cache = [[NSCache alloc] init]; // Cache up to 5 installations. cache.countLimit = 5; - return [self initWithService:@"com.firebase.FIRInstallations.installations" cache:cache]; + return [self initWithService:service cache:cache]; } - (instancetype)initWithService:(NSString *)service cache:(NSCache *)cache { self = [super init]; if (self) { - _keychainQueue = dispatch_queue_create( - "com.firebase.FIRInstallations.FIRSecureStorage.Keychain", DISPATCH_QUEUE_SERIAL); - _inMemoryCacheQueue = dispatch_queue_create( - "com.firebase.FIRInstallations.FIRSecureStorage.InMemoryCache", DISPATCH_QUEUE_SERIAL); + _keychainQueue = + dispatch_queue_create("com.gul.KeychainStorage.Keychain", DISPATCH_QUEUE_SERIAL); + _inMemoryCacheQueue = + dispatch_queue_create("com.gul.KeychainStorage.InMemoryCache", DISPATCH_QUEUE_SERIAL); _service = [service copy]; _inMemoryCache = cache; } @@ -91,12 +91,12 @@ - (instancetype)initWithService:(NSString *)service cache:(NSCache *)cache { // Then store the object to the keychain. NSDictionary *query = [self keychainQueryWithKey:key accessGroup:accessGroup]; NSError *error; - NSData *encodedObject = [self archiveDataForObject:object error:&error]; + NSData *encodedObject = [GULSecureCoding archivedDataWithRootObject:object error:&error]; if (!encodedObject) { return error; } - if (![FIRInstallationsKeychainUtils setItem:encodedObject withQuery:query error:&error]) { + if (![GULKeychainUtils setItem:encodedObject withQuery:query error:&error]) { return error; } @@ -115,7 +115,7 @@ - (instancetype)initWithService:(NSString *)service cache:(NSCache *)cache { NSDictionary *query = [self keychainQueryWithKey:key accessGroup:accessGroup]; NSError *error; - if (![FIRInstallationsKeychainUtils removeItemWithQuery:query error:&error]) { + if (![GULKeychainUtils removeItemWithQuery:query error:&error]) { return error; } @@ -129,29 +129,28 @@ - (instancetype)initWithService:(NSString *)service cache:(NSCache *)cache { objectClass:(Class)objectClass accessGroup:(nullable NSString *)accessGroup { // Look for the object in the keychain. - return [FBLPromise onQueue:self.keychainQueue - do:^id { - NSDictionary *query = [self keychainQueryWithKey:key - accessGroup:accessGroup]; - NSError *error; - NSData *encodedObject = - [FIRInstallationsKeychainUtils getItemWithQuery:query error:&error]; - - if (error) { - return error; - } - if (!encodedObject) { - return nil; - } - id object = [self unarchivedObjectOfClass:objectClass - fromData:encodedObject - error:&error]; - if (error) { - return error; - } - - return object; - }] + return [FBLPromise + onQueue:self.keychainQueue + do:^id { + NSDictionary *query = [self keychainQueryWithKey:key accessGroup:accessGroup]; + NSError *error; + NSData *encodedObject = [GULKeychainUtils getItemWithQuery:query error:&error]; + + if (error) { + return error; + } + if (!encodedObject) { + return nil; + } + id object = [GULSecureCoding unarchivedObjectOfClass:objectClass + fromData:encodedObject + error:&error]; + if (error) { + return error; + } + + return object; + }] .thenOn(self.inMemoryCacheQueue, ^id _Nullable(id _Nullable object) { // Save object to the in-memory cache if exists and return the object. @@ -190,66 +189,4 @@ - (void)resetInMemoryCache { return query; } -- (nullable NSData *)archiveDataForObject:(id)object error:(NSError **)outError { - NSData *archiveData; - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSError *error; - archiveData = [NSKeyedArchiver archivedDataWithRootObject:object - requiringSecureCoding:YES - error:&error]; - if (error && outError) { - *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithError:error]; - } - } else { - @try { - NSMutableData *data = [NSMutableData data]; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; -#pragma clang diagnostic pop - archiver.requiresSecureCoding = YES; - - [archiver encodeObject:object forKey:NSKeyedArchiveRootObjectKey]; - [archiver finishEncoding]; - - archiveData = [data copy]; - } @catch (NSException *exception) { - if (outError) { - *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithException:exception]; - } - } - } - - return archiveData; -} - -- (nullable id)unarchivedObjectOfClass:(Class)class - fromData:(NSData *)data - error:(NSError **)outError { - id object; - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSError *error; - object = [NSKeyedUnarchiver unarchivedObjectOfClass:class fromData:data error:&error]; - if (error && outError) { - *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithError:error]; - } - } else { - @try { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; -#pragma clang diagnostic pop - unarchiver.requiresSecureCoding = YES; - - object = [unarchiver decodeObjectOfClass:class forKey:NSKeyedArchiveRootObjectKey]; - } @catch (NSException *exception) { - if (outError) { - *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithException:exception]; - } - } - } - - return object; -} - @end diff --git a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m b/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m similarity index 77% rename from Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m rename to Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m index 51da86a..673b6c4 100644 --- a/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m +++ b/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m @@ -14,11 +14,11 @@ * limitations under the License. */ -#import "FIRInstallationsKeychainUtils.h" +#import -#import "FIRInstallationsErrorUtil.h" +NSString *const kGULKeychainUtilsErrorDomain = @"com.gul.keychain.ErrorDomain"; -@implementation FIRInstallationsKeychainUtils +@implementation GULKeychainUtils + (nullable NSData *)getItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nullable)outError { @@ -45,8 +45,7 @@ + (nullable NSData *)getItemWithQuery:(NSDictionary *)query } } else { if (outError) { - *outError = [FIRInstallationsErrorUtil keychainErrorWithFunction:@"SecItemCopyMatching" - status:status]; + *outError = [self keychainErrorWithFunction:@"SecItemCopyMatching" status:status]; } } return nil; @@ -82,7 +81,7 @@ + (BOOL)setItem:(NSData *)item NSString *function = existingItem ? @"SecItemUpdate" : @"SecItemAdd"; if (outError) { - *outError = [FIRInstallationsErrorUtil keychainErrorWithFunction:function status:status]; + *outError = [self keychainErrorWithFunction:function status:status]; } return NO; } @@ -98,10 +97,17 @@ + (BOOL)removeItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nu } if (outError) { - *outError = [FIRInstallationsErrorUtil keychainErrorWithFunction:@"SecItemDelete" - status:status]; + *outError = [self keychainErrorWithFunction:@"SecItemDelete" status:status]; } return NO; } +#pragma mark - Errors + ++ (NSError *)keychainErrorWithFunction:(NSString *)keychainFunction status:(OSStatus)status { + NSString *failureReason = [NSString stringWithFormat:@"%@ (%li)", keychainFunction, (long)status]; + NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey : failureReason}; + return [NSError errorWithDomain:kGULKeychainUtilsErrorDomain code:0 userInfo:userInfo]; +} + @end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m b/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m index 6442941..8b1ac6a 100644 --- a/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m +++ b/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m @@ -201,7 +201,11 @@ + (BOOL)isAppStoreReceiptSandbox { } + (BOOL)isSimulator { -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_SIMULATOR + return YES; +#elif TARGET_OS_MACCATALYST + return NO; +#elif TARGET_OS_IOS || TARGET_OS_TV NSString *platform = [GULAppEnvironmentUtil deviceModel]; return [platform isEqual:@"x86_64"] || [platform isEqual:@"i386"]; #elif TARGET_OS_OSX diff --git a/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m b/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m new file mode 100644 index 0000000..27d48bb --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m @@ -0,0 +1,153 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h" + +#import + +#ifdef DEBUG +#import +#import "GoogleUtilities/Common/GULLoggerCodes.h" + +static GULLoggerService kGULLoggerSwizzler = @"[GoogleUtilities/MethodSwizzler]"; +#endif + +dispatch_queue_t GetGULSwizzlingQueue(void) { + static dispatch_queue_t queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + queue = dispatch_queue_create("com.google.GULSwizzler", DISPATCH_QUEUE_SERIAL); + }); + return queue; +} + +@implementation GULSwizzler + ++ (void)swizzleClass:(Class)aClass + selector:(SEL)selector + isClassSelector:(BOOL)isClassSelector + withBlock:(nullable id)block { + dispatch_sync(GetGULSwizzlingQueue(), ^{ + NSAssert(selector, @"The selector cannot be NULL"); + NSAssert(aClass, @"The class cannot be Nil"); + Class resolvedClass = aClass; + Method method = nil; + if (isClassSelector) { + method = class_getClassMethod(aClass, selector); + resolvedClass = object_getClass(aClass); + } else { + method = class_getInstanceMethod(aClass, selector); + } + NSAssert(method, @"You're attempting to swizzle a method that doesn't exist. (%@, %@)", + NSStringFromClass(resolvedClass), NSStringFromSelector(selector)); + IMP newImp = imp_implementationWithBlock(block); +#ifdef DEBUG + IMP currentImp = class_getMethodImplementation(resolvedClass, selector); + Class class = NSClassFromString(@"GULSwizzlingCache"); + if (class) { + SEL cacheSelector = NSSelectorFromString(@"cacheCurrentIMP:forNewIMP:forClass:withSelector:"); + NSMethodSignature *methodSignature = [class methodSignatureForSelector:cacheSelector]; + if (methodSignature != nil) { + NSInvocation *inv = [NSInvocation invocationWithMethodSignature:methodSignature]; + [inv setSelector:cacheSelector]; + [inv setTarget:class]; + [inv setArgument:&(currentImp) atIndex:2]; + [inv setArgument:&(newImp) atIndex:3]; + [inv setArgument:&(resolvedClass) atIndex:4]; + [inv setArgument:(void *_Nonnull) & (selector) atIndex:5]; + [inv invoke]; + } + } +#endif + + const char *typeEncoding = method_getTypeEncoding(method); + __unused IMP originalImpOfClass = + class_replaceMethod(resolvedClass, selector, newImp, typeEncoding); + +#ifdef DEBUG + // If !originalImpOfClass, then the IMP came from a superclass. + if (originalImpOfClass) { + SEL selector = NSSelectorFromString(@"originalIMPOfCurrentIMP:"); + NSMethodSignature *methodSignature = [class methodSignatureForSelector:selector]; + if (methodSignature != nil) { + NSInvocation *inv = [NSInvocation invocationWithMethodSignature:methodSignature]; + [inv setSelector:selector]; + [inv setTarget:class]; + [inv setArgument:&(currentImp) atIndex:2]; + [inv invoke]; + IMP testOriginal; + [inv getReturnValue:&testOriginal]; + if (originalImpOfClass != testOriginal) { + GULLogWarning(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeMethodSwizzling000], + @"Swizzling class: %@ SEL:%@ after it has been previously been swizzled.", + NSStringFromClass(resolvedClass), NSStringFromSelector(selector)); + } + } + } +#endif + }); +} + ++ (nullable IMP)currentImplementationForClass:(Class)aClass + selector:(SEL)selector + isClassSelector:(BOOL)isClassSelector { + NSAssert(selector, @"The selector cannot be NULL"); + NSAssert(aClass, @"The class cannot be Nil"); + if (selector == NULL || aClass == nil) { + return nil; + } + __block IMP currentIMP = nil; + dispatch_sync(GetGULSwizzlingQueue(), ^{ + Method method = nil; + if (isClassSelector) { + method = class_getClassMethod(aClass, selector); + } else { + method = class_getInstanceMethod(aClass, selector); + } + NSAssert(method, @"The Method for this class/selector combo doesn't exist (%@, %@).", + NSStringFromClass(aClass), NSStringFromSelector(selector)); + if (method == nil) { + return; + } + currentIMP = method_getImplementation(method); + NSAssert(currentIMP, @"The IMP for this class/selector combo doesn't exist (%@, %@).", + NSStringFromClass(aClass), NSStringFromSelector(selector)); + }); + return currentIMP; +} + ++ (BOOL)selector:(SEL)selector existsInClass:(Class)aClass isClassSelector:(BOOL)isClassSelector { + Method method = isClassSelector ? class_getClassMethod(aClass, selector) + : class_getInstanceMethod(aClass, selector); + return method != nil; +} + ++ (NSArray *)ivarObjectsForObject:(id)object { + NSMutableArray *array = [NSMutableArray array]; + unsigned int count; + Ivar *vars = class_copyIvarList([object class], &count); + for (NSUInteger i = 0; i < count; i++) { + const char *typeEncoding = ivar_getTypeEncoding(vars[i]); + // Check to see if the ivar is an object. + if (strncmp(typeEncoding, "@", 1) == 0) { + id ivarObject = object_getIvar(object, vars[i]); + [array addObject:ivarObject]; + } + } + free(vars); + return array; +} +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h b/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h new file mode 100644 index 0000000..a33262a --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h @@ -0,0 +1,207 @@ +/* + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * GULOriginalIMPConvenienceMacros.h + * + * This header contains convenience macros for invoking the original IMP of a swizzled method. + */ + +/** + * Invokes original IMP when the original selector takes no arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + */ +#define GUL_INVOKE_ORIGINAL_IMP0(__receivingObject, __swizzledSEL, __returnType, __originalIMP) \ + ((__returnType(*)(id, SEL))__originalIMP)(__receivingObject, __swizzledSEL) + +/** + * Invokes original IMP when the original selector takes 1 argument. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP1(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1)))__originalIMP)(__receivingObject, __swizzledSEL, \ + __arg1) + +/** + * Invokes original IMP when the original selector takes 2 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP2(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2)))__originalIMP)( \ + __receivingObject, __swizzledSEL, __arg1, __arg2) + +/** + * Invokes original IMP when the original selector takes 3 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + * @param __arg3 The third argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP3(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2, __arg3) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), \ + __typeof__(__arg3)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \ + __arg2, __arg3) + +/** + * Invokes original IMP when the original selector takes 4 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + * @param __arg3 The third argument. + * @param __arg4 The fourth argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP4(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2, __arg3, __arg4) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ + __typeof__(__arg4)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \ + __arg2, __arg3, __arg4) + +/** + * Invokes original IMP when the original selector takes 5 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + * @param __arg3 The third argument. + * @param __arg4 The fourth argument. + * @param __arg5 The fifth argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP5(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2, __arg3, __arg4, __arg5) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ + __typeof__(__arg4), __typeof__(__arg5)))__originalIMP)( \ + __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5) + +/** + * Invokes original IMP when the original selector takes 6 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + * @param __arg3 The third argument. + * @param __arg4 The fourth argument. + * @param __arg5 The fifth argument. + * @param __arg6 The sixth argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP6(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2, __arg3, __arg4, __arg5, __arg6) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ + __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6)))__originalIMP)( \ + __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6) + +/** + * Invokes original IMP when the original selector takes 7 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + * @param __arg3 The third argument. + * @param __arg4 The fourth argument. + * @param __arg5 The fifth argument. + * @param __arg6 The sixth argument. + * @param __arg7 The seventh argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP7(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ + __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \ + __typeof__(__arg7)))__originalIMP)( \ + __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7) + +/** + * Invokes original IMP when the original selector takes 8 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + * @param __arg3 The third argument. + * @param __arg4 The fourth argument. + * @param __arg5 The fifth argument. + * @param __arg6 The sixth argument. + * @param __arg7 The seventh argument. + * @param __arg8 The eighth argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP8(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ + __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \ + __typeof__(__arg7), __typeof__(__arg8)))__originalIMP)( \ + __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, \ + __arg8) + +/** + * Invokes original IMP when the original selector takes 9 arguments. + * + * @param __receivingObject The object on which the IMP is invoked. + * @param __swizzledSEL The selector used for swizzling. + * @param __returnType The return type of the original implementation. + * @param __originalIMP The original IMP. + * @param __arg1 The first argument. + * @param __arg2 The second argument. + * @param __arg3 The third argument. + * @param __arg4 The fourth argument. + * @param __arg5 The fifth argument. + * @param __arg6 The sixth argument. + * @param __arg7 The seventh argument. + * @param __arg8 The eighth argument. + * @param __arg9 The ninth argument. + */ +#define GUL_INVOKE_ORIGINAL_IMP9(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ + __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8, \ + __arg9) \ + ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ + __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \ + __typeof__(__arg7), __typeof__(__arg8), __typeof__(__arg9)))__originalIMP)( \ + __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, \ + __arg8, __arg9) diff --git a/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h b/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h new file mode 100644 index 0000000..26949c8 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h @@ -0,0 +1,71 @@ +/* + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** This class handles the runtime manipulation necessary to instrument selectors. It stores the + * classes and selectors that have been swizzled, and runs all operations on its own queue. + */ +@interface GULSwizzler : NSObject + +/** Manipulates the Objective-C runtime to replace the original IMP with the supplied block. + * + * @param aClass The class to swizzle. + * @param selector The selector of the class to swizzle. + * @param isClassSelector A BOOL specifying whether the selector is a class or instance selector. + * @param block The block that replaces the original IMP. + */ ++ (void)swizzleClass:(Class)aClass + selector:(SEL)selector + isClassSelector:(BOOL)isClassSelector + withBlock:(nullable id)block; + +/** Returns the current IMP for the given class and selector. + * + * @param aClass The class to use. + * @param selector The selector to find the implementation of. + * @param isClassSelector A BOOL specifying whether the selector is a class or instance selector. + * @return The implementation of the selector in the runtime. + */ ++ (nullable IMP)currentImplementationForClass:(Class)aClass + selector:(SEL)selector + isClassSelector:(BOOL)isClassSelector; + +/** Checks the runtime to see if a selector exists on a class. If a property is declared as + * @dynamic, we have a reverse swizzling situation, where the implementation of a method exists + * only in concrete subclasses, and NOT in the superclass. We can detect that situation using + * this helper method. Similarly, we can detect situations where a class doesn't implement a + * protocol method. + * + * @param selector The selector to check for. + * @param aClass The class to check. + * @param isClassSelector A BOOL specifying whether the selector is a class or instance selector. + * @return YES if the method was found in this selector/class combination, NO otherwise. + */ ++ (BOOL)selector:(SEL)selector existsInClass:(Class)aClass isClassSelector:(BOOL)isClassSelector; + +/** Returns a list of all Objective-C (and not primitive) ivars contained by the given object. + * + * @param object The object whose ivars will be iterated. + * @return The list of ivar objects. + */ ++ (NSArray *)ivarObjectsForObject:(id)object; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.h b/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.h new file mode 100644 index 0000000..36f94a7 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.h @@ -0,0 +1,49 @@ +// Copyright 2018 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +/// This is a copy of Google Toolbox for Mac library to avoid creating an extra framework. + +// NOTE: For 64bit, none of these apis handle input sizes >32bits, they will return nil when given +// such data. To handle data of that size you really should be streaming it rather then doing it all +// in memory. + +@interface NSData (GULGzip) + +/// Returns an data as the result of decompressing the payload of |data|.The data to decompress must +/// be a gzipped payloads. ++ (NSData *)gul_dataByInflatingGzippedData:(NSData *)data error:(NSError **)error; + +/// Returns an compressed data with the result of gzipping the payload of |data|. Uses the default +/// compression level. ++ (NSData *)gul_dataByGzippingData:(NSData *)data error:(NSError **)error; + +FOUNDATION_EXPORT NSString *const GULNSDataZlibErrorDomain; +FOUNDATION_EXPORT NSString *const GULNSDataZlibErrorKey; // NSNumber +FOUNDATION_EXPORT NSString *const GULNSDataZlibRemainingBytesKey; // NSNumber + +typedef NS_ENUM(NSInteger, GULNSDataZlibError) { + GULNSDataZlibErrorGreaterThan32BitsToCompress = 1024, + // An internal zlib error. + // GULNSDataZlibErrorKey will contain the error value. + // NSLocalizedDescriptionKey may contain an error string from zlib. + // Look in zlib.h for list of errors. + GULNSDataZlibErrorInternal, + // There was left over data in the buffer that was not used. + // GULNSDataZlibRemainingBytesKey will contain number of remaining bytes. + GULNSDataZlibErrorDataRemaining +}; + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m b/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m new file mode 100644 index 0000000..5a77bb8 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m @@ -0,0 +1,207 @@ +// Copyright 2018 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GoogleUtilities/NSData+zlib/GULNSData+zlib.h" + +#import + +#define kChunkSize 1024 +#define Z_DEFAULT_COMPRESSION (-1) + +NSString *const GULNSDataZlibErrorDomain = @"com.google.GULNSDataZlibErrorDomain"; +NSString *const GULNSDataZlibErrorKey = @"GULNSDataZlibErrorKey"; +NSString *const GULNSDataZlibRemainingBytesKey = @"GULNSDataZlibRemainingBytesKey"; + +@implementation NSData (GULGzip) + ++ (NSData *)gul_dataByInflatingGzippedData:(NSData *)data error:(NSError **)error { + const void *bytes = [data bytes]; + NSUInteger length = [data length]; + if (!bytes || !length) { + return nil; + } + +#if defined(__LP64__) && __LP64__ + // Don't support > 32bit length for 64 bit, see note in header. + if (length > UINT_MAX) { + return nil; + } +#endif + + z_stream strm; + bzero(&strm, sizeof(z_stream)); + + // Setup the input. + strm.avail_in = (unsigned int)length; + strm.next_in = (unsigned char *)bytes; + + int windowBits = 15; // 15 to enable any window size + windowBits += 32; // and +32 to enable zlib or gzip header detection. + + int retCode; + if ((retCode = inflateInit2(&strm, windowBits)) != Z_OK) { + if (error) { + NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode] + forKey:GULNSDataZlibErrorKey]; + *error = [NSError errorWithDomain:GULNSDataZlibErrorDomain + code:GULNSDataZlibErrorInternal + userInfo:userInfo]; + } + return nil; + } + + // Hint the size at 4x the input size. + NSMutableData *result = [NSMutableData dataWithCapacity:(length * 4)]; + unsigned char output[kChunkSize]; + + // Loop to collect the data. + do { + // Update what we're passing in. + strm.avail_out = kChunkSize; + strm.next_out = output; + retCode = inflate(&strm, Z_NO_FLUSH); + if ((retCode != Z_OK) && (retCode != Z_STREAM_END)) { + if (error) { + NSMutableDictionary *userInfo = + [NSMutableDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode] + forKey:GULNSDataZlibErrorKey]; + if (strm.msg) { + NSString *message = [NSString stringWithUTF8String:strm.msg]; + if (message) { + [userInfo setObject:message forKey:NSLocalizedDescriptionKey]; + } + } + *error = [NSError errorWithDomain:GULNSDataZlibErrorDomain + code:GULNSDataZlibErrorInternal + userInfo:userInfo]; + } + inflateEnd(&strm); + return nil; + } + // Collect what we got. + unsigned gotBack = kChunkSize - strm.avail_out; + if (gotBack > 0) { + [result appendBytes:output length:gotBack]; + } + + } while (retCode == Z_OK); + + // Make sure there wasn't more data tacked onto the end of a valid compressed stream. + if (strm.avail_in != 0) { + if (error) { + NSDictionary *userInfo = + [NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedInt:strm.avail_in] + forKey:GULNSDataZlibRemainingBytesKey]; + *error = [NSError errorWithDomain:GULNSDataZlibErrorDomain + code:GULNSDataZlibErrorDataRemaining + userInfo:userInfo]; + } + result = nil; + } + // The only way out of the loop was by hitting the end of the stream. + NSAssert(retCode == Z_STREAM_END, + @"Thought we finished inflate w/o getting a result of stream end, code %d", retCode); + + // Clean up. + inflateEnd(&strm); + + return result; +} + ++ (NSData *)gul_dataByGzippingData:(NSData *)data error:(NSError **)error { + const void *bytes = [data bytes]; + NSUInteger length = [data length]; + + int level = Z_DEFAULT_COMPRESSION; + if (!bytes || !length) { + return nil; + } + +#if defined(__LP64__) && __LP64__ + // Don't support > 32bit length for 64 bit, see note in header. + if (length > UINT_MAX) { + if (error) { + *error = [NSError errorWithDomain:GULNSDataZlibErrorDomain + code:GULNSDataZlibErrorGreaterThan32BitsToCompress + userInfo:nil]; + } + return nil; + } +#endif + + z_stream strm; + bzero(&strm, sizeof(z_stream)); + + int memLevel = 8; // Default. + int windowBits = 15 + 16; // Enable gzip header instead of zlib header. + + int retCode; + if ((retCode = deflateInit2(&strm, level, Z_DEFLATED, windowBits, memLevel, + Z_DEFAULT_STRATEGY)) != Z_OK) { + if (error) { + NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode] + forKey:GULNSDataZlibErrorKey]; + *error = [NSError errorWithDomain:GULNSDataZlibErrorDomain + code:GULNSDataZlibErrorInternal + userInfo:userInfo]; + } + return nil; + } + + // Hint the size at 1/4 the input size. + NSMutableData *result = [NSMutableData dataWithCapacity:(length / 4)]; + unsigned char output[kChunkSize]; + + // Setup the input. + strm.avail_in = (unsigned int)length; + strm.next_in = (unsigned char *)bytes; + + // Collect the data. + do { + // update what we're passing in + strm.avail_out = kChunkSize; + strm.next_out = output; + retCode = deflate(&strm, Z_FINISH); + if ((retCode != Z_OK) && (retCode != Z_STREAM_END)) { + if (error) { + NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode] + forKey:GULNSDataZlibErrorKey]; + *error = [NSError errorWithDomain:GULNSDataZlibErrorDomain + code:GULNSDataZlibErrorInternal + userInfo:userInfo]; + } + deflateEnd(&strm); + return nil; + } + // Collect what we got. + unsigned gotBack = kChunkSize - strm.avail_out; + if (gotBack > 0) { + [result appendBytes:output length:gotBack]; + } + + } while (retCode == Z_OK); + + // If the loop exits, it used all input and the stream ended. + NSAssert(strm.avail_in == 0, + @"Should have finished deflating without using all input, %u bytes left", strm.avail_in); + NSAssert(retCode == Z_STREAM_END, + @"thought we finished deflate w/o getting a result of stream end, code %d", retCode); + + // Clean up. + deflateEnd(&strm); + + return result; +} + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m b/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m new file mode 100644 index 0000000..4389660 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m @@ -0,0 +1,101 @@ +// Copyright 2017 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GoogleUtilities/Network/Private/GULMutableDictionary.h" + +@implementation GULMutableDictionary { + /// The mutable dictionary. + NSMutableDictionary *_objects; + + /// Serial synchronization queue. All reads should use dispatch_sync, while writes use + /// dispatch_async. + dispatch_queue_t _queue; +} + +- (instancetype)init { + self = [super init]; + + if (self) { + _objects = [[NSMutableDictionary alloc] init]; + _queue = dispatch_queue_create("GULMutableDictionary", DISPATCH_QUEUE_SERIAL); + } + + return self; +} + +- (NSString *)description { + __block NSString *description; + dispatch_sync(_queue, ^{ + description = self->_objects.description; + }); + return description; +} + +- (id)objectForKey:(id)key { + __block id object; + dispatch_sync(_queue, ^{ + object = [self->_objects objectForKey:key]; + }); + return object; +} + +- (void)setObject:(id)object forKey:(id)key { + dispatch_async(_queue, ^{ + [self->_objects setObject:object forKey:key]; + }); +} + +- (void)removeObjectForKey:(id)key { + dispatch_async(_queue, ^{ + [self->_objects removeObjectForKey:key]; + }); +} + +- (void)removeAllObjects { + dispatch_async(_queue, ^{ + [self->_objects removeAllObjects]; + }); +} + +- (NSUInteger)count { + __block NSUInteger count; + dispatch_sync(_queue, ^{ + count = self->_objects.count; + }); + return count; +} + +- (id)objectForKeyedSubscript:(id)key { + __block id object; + dispatch_sync(_queue, ^{ + object = self->_objects[key]; + }); + return object; +} + +- (void)setObject:(id)obj forKeyedSubscript:(id)key { + dispatch_async(_queue, ^{ + self->_objects[key] = obj; + }); +} + +- (NSDictionary *)dictionary { + __block NSDictionary *dictionary; + dispatch_sync(_queue, ^{ + dictionary = [self->_objects copy]; + }); + return dictionary; +} + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m b/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m new file mode 100644 index 0000000..9d78e0e --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m @@ -0,0 +1,389 @@ +// Copyright 2017 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GoogleUtilities/Network/Private/GULNetwork.h" +#import "GoogleUtilities/Network/Private/GULNetworkMessageCode.h" + +#import +#import +#import +#import "GoogleUtilities/Network/Private/GULMutableDictionary.h" +#import "GoogleUtilities/Network/Private/GULNetworkConstants.h" + +/// Constant string for request header Content-Encoding. +static NSString *const kGULNetworkContentCompressionKey = @"Content-Encoding"; + +/// Constant string for request header Content-Encoding value. +static NSString *const kGULNetworkContentCompressionValue = @"gzip"; + +/// Constant string for request header Content-Length. +static NSString *const kGULNetworkContentLengthKey = @"Content-Length"; + +/// Constant string for request header Content-Type. +static NSString *const kGULNetworkContentTypeKey = @"Content-Type"; + +/// Constant string for request header Content-Type value. +static NSString *const kGULNetworkContentTypeValue = @"application/x-www-form-urlencoded"; + +/// Constant string for GET request method. +static NSString *const kGULNetworkGETRequestMethod = @"GET"; + +/// Constant string for POST request method. +static NSString *const kGULNetworkPOSTRequestMethod = @"POST"; + +/// Default constant string as a prefix for network logger. +static NSString *const kGULNetworkLogTag = @"Google/Utilities/Network"; + +@interface GULNetwork () +@end + +@implementation GULNetwork { + /// Network reachability. + GULReachabilityChecker *_reachability; + + /// The dictionary of requests by session IDs { NSString : id }. + GULMutableDictionary *_requests; +} + +- (instancetype)init { + return [self initWithReachabilityHost:kGULNetworkReachabilityHost]; +} + +- (instancetype)initWithReachabilityHost:(NSString *)reachabilityHost { + self = [super init]; + if (self) { + // Setup reachability. + _reachability = [[GULReachabilityChecker alloc] initWithReachabilityDelegate:self + withHost:reachabilityHost]; + if (![_reachability start]) { + return nil; + } + + _requests = [[GULMutableDictionary alloc] init]; + _timeoutInterval = kGULNetworkTimeOutInterval; + } + return self; +} + +- (void)dealloc { + _reachability.reachabilityDelegate = nil; + [_reachability stop]; +} + +#pragma mark - External Methods + ++ (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID + completionHandler:(GULNetworkSystemCompletionHandler)completionHandler { + [GULNetworkURLSession handleEventsForBackgroundURLSessionID:sessionID + completionHandler:completionHandler]; +} + +- (NSString *)postURL:(NSURL *)url + payload:(NSData *)payload + queue:(dispatch_queue_t)queue + usingBackgroundSession:(BOOL)usingBackgroundSession + completionHandler:(GULNetworkCompletionHandler)handler { + if (!url.absoluteString.length) { + [self handleErrorWithCode:GULErrorCodeNetworkInvalidURL queue:queue withHandler:handler]; + return nil; + } + + NSTimeInterval timeOutInterval = _timeoutInterval ?: kGULNetworkTimeOutInterval; + + NSMutableURLRequest *request = + [[NSMutableURLRequest alloc] initWithURL:url + cachePolicy:NSURLRequestReloadIgnoringLocalCacheData + timeoutInterval:timeOutInterval]; + + if (!request) { + [self handleErrorWithCode:GULErrorCodeNetworkSessionTaskCreation + queue:queue + withHandler:handler]; + return nil; + } + + NSError *compressError = nil; + NSData *compressedData = [NSData gul_dataByGzippingData:payload error:&compressError]; + if (!compressedData || compressError) { + if (compressError || payload.length > 0) { + // If the payload is not empty but it fails to compress the payload, something has been wrong. + [self handleErrorWithCode:GULErrorCodeNetworkPayloadCompression + queue:queue + withHandler:handler]; + return nil; + } + compressedData = [[NSData alloc] init]; + } + + NSString *postLength = @(compressedData.length).stringValue; + + // Set up the request with the compressed data. + [request setValue:postLength forHTTPHeaderField:kGULNetworkContentLengthKey]; + request.HTTPBody = compressedData; + request.HTTPMethod = kGULNetworkPOSTRequestMethod; + [request setValue:kGULNetworkContentTypeValue forHTTPHeaderField:kGULNetworkContentTypeKey]; + [request setValue:kGULNetworkContentCompressionValue + forHTTPHeaderField:kGULNetworkContentCompressionKey]; + + GULNetworkURLSession *fetcher = [[GULNetworkURLSession alloc] initWithNetworkLoggerDelegate:self]; + fetcher.backgroundNetworkEnabled = usingBackgroundSession; + + __weak GULNetwork *weakSelf = self; + NSString *requestID = [fetcher + sessionIDFromAsyncPOSTRequest:request + completionHandler:^(NSHTTPURLResponse *response, NSData *data, + NSString *sessionID, NSError *error) { + GULNetwork *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + dispatch_queue_t queueToDispatch = queue ? queue : dispatch_get_main_queue(); + dispatch_async(queueToDispatch, ^{ + if (sessionID.length) { + [strongSelf->_requests removeObjectForKey:sessionID]; + } + if (handler) { + handler(response, data, error); + } + }); + }]; + if (!requestID) { + [self handleErrorWithCode:GULErrorCodeNetworkSessionTaskCreation + queue:queue + withHandler:handler]; + return nil; + } + + [self GULNetwork_logWithLevel:kGULNetworkLogLevelDebug + messageCode:kGULNetworkMessageCodeNetwork000 + message:@"Uploading data. Host" + context:url]; + _requests[requestID] = fetcher; + return requestID; +} + +- (NSString *)getURL:(NSURL *)url + headers:(NSDictionary *)headers + queue:(dispatch_queue_t)queue + usingBackgroundSession:(BOOL)usingBackgroundSession + completionHandler:(GULNetworkCompletionHandler)handler { + if (!url.absoluteString.length) { + [self handleErrorWithCode:GULErrorCodeNetworkInvalidURL queue:queue withHandler:handler]; + return nil; + } + + NSTimeInterval timeOutInterval = _timeoutInterval ?: kGULNetworkTimeOutInterval; + NSMutableURLRequest *request = + [[NSMutableURLRequest alloc] initWithURL:url + cachePolicy:NSURLRequestReloadIgnoringLocalCacheData + timeoutInterval:timeOutInterval]; + + if (!request) { + [self handleErrorWithCode:GULErrorCodeNetworkSessionTaskCreation + queue:queue + withHandler:handler]; + return nil; + } + + request.HTTPMethod = kGULNetworkGETRequestMethod; + request.allHTTPHeaderFields = headers; + + GULNetworkURLSession *fetcher = [[GULNetworkURLSession alloc] initWithNetworkLoggerDelegate:self]; + fetcher.backgroundNetworkEnabled = usingBackgroundSession; + + __weak GULNetwork *weakSelf = self; + NSString *requestID = [fetcher + sessionIDFromAsyncGETRequest:request + completionHandler:^(NSHTTPURLResponse *response, NSData *data, NSString *sessionID, + NSError *error) { + GULNetwork *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + dispatch_queue_t queueToDispatch = queue ? queue : dispatch_get_main_queue(); + dispatch_async(queueToDispatch, ^{ + if (sessionID.length) { + [strongSelf->_requests removeObjectForKey:sessionID]; + } + if (handler) { + handler(response, data, error); + } + }); + }]; + + if (!requestID) { + [self handleErrorWithCode:GULErrorCodeNetworkSessionTaskCreation + queue:queue + withHandler:handler]; + return nil; + } + + [self GULNetwork_logWithLevel:kGULNetworkLogLevelDebug + messageCode:kGULNetworkMessageCodeNetwork001 + message:@"Downloading data. Host" + context:url]; + _requests[requestID] = fetcher; + return requestID; +} + +- (BOOL)hasUploadInProgress { + return _requests.count > 0; +} + +#pragma mark - Network Reachability + +/// Tells reachability delegate to call reachabilityDidChangeToStatus: to notify the network +/// reachability has changed. +- (void)reachability:(GULReachabilityChecker *)reachability + statusChanged:(GULReachabilityStatus)status { + _networkConnected = (status == kGULReachabilityViaCellular || status == kGULReachabilityViaWifi); + [_reachabilityDelegate reachabilityDidChange]; +} + +#pragma mark - Network logger delegate + +- (void)setLoggerDelegate:(id)loggerDelegate { + // Explicitly check whether the delegate responds to the methods because conformsToProtocol does + // not work correctly even though the delegate does respond to the methods. + if (!loggerDelegate || + ![loggerDelegate respondsToSelector:@selector(GULNetwork_logWithLevel: + messageCode:message:contexts:)] || + ![loggerDelegate respondsToSelector:@selector(GULNetwork_logWithLevel: + messageCode:message:context:)] || + ![loggerDelegate respondsToSelector:@selector(GULNetwork_logWithLevel: + messageCode:message:)]) { + GULLogError(kGULLoggerNetwork, NO, + [NSString stringWithFormat:@"I-NET%06ld", (long)kGULNetworkMessageCodeNetwork002], + @"Cannot set the network logger delegate: delegate does not conform to the network " + "logger protocol."); + return; + } + _loggerDelegate = loggerDelegate; +} + +#pragma mark - Private methods + +/// Handles network error and calls completion handler with the error. +- (void)handleErrorWithCode:(NSInteger)code + queue:(dispatch_queue_t)queue + withHandler:(GULNetworkCompletionHandler)handler { + NSDictionary *userInfo = @{kGULNetworkErrorContext : @"Failed to create network request"}; + NSError *error = [[NSError alloc] initWithDomain:kGULNetworkErrorDomain + code:code + userInfo:userInfo]; + [self GULNetwork_logWithLevel:kGULNetworkLogLevelWarning + messageCode:kGULNetworkMessageCodeNetwork002 + message:@"Failed to create network request. Code, error" + contexts:@[ @(code), error ]]; + if (handler) { + dispatch_queue_t queueToDispatch = queue ? queue : dispatch_get_main_queue(); + dispatch_async(queueToDispatch, ^{ + handler(nil, nil, error); + }); + } +} + +#pragma mark - Network logger + +- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel + messageCode:(GULNetworkMessageCode)messageCode + message:(NSString *)message + contexts:(NSArray *)contexts { + // Let the delegate log the message if there is a valid logger delegate. Otherwise, just log + // errors/warnings/info messages to the console log. + if (_loggerDelegate) { + [_loggerDelegate GULNetwork_logWithLevel:logLevel + messageCode:messageCode + message:message + contexts:contexts]; + return; + } + if (_isDebugModeEnabled || logLevel == kGULNetworkLogLevelError || + logLevel == kGULNetworkLogLevelWarning || logLevel == kGULNetworkLogLevelInfo) { + NSString *formattedMessage = GULStringWithLogMessage(message, logLevel, contexts); + NSLog(@"%@", formattedMessage); + GULLogBasic((GULLoggerLevel)logLevel, kGULLoggerNetwork, NO, + [NSString stringWithFormat:@"I-NET%06ld", (long)messageCode], formattedMessage, + NULL); + } +} + +- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel + messageCode:(GULNetworkMessageCode)messageCode + message:(NSString *)message + context:(id)context { + if (_loggerDelegate) { + [_loggerDelegate GULNetwork_logWithLevel:logLevel + messageCode:messageCode + message:message + context:context]; + return; + } + NSArray *contexts = context ? @[ context ] : @[]; + [self GULNetwork_logWithLevel:logLevel messageCode:messageCode message:message contexts:contexts]; +} + +- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel + messageCode:(GULNetworkMessageCode)messageCode + message:(NSString *)message { + if (_loggerDelegate) { + [_loggerDelegate GULNetwork_logWithLevel:logLevel messageCode:messageCode message:message]; + return; + } + [self GULNetwork_logWithLevel:logLevel messageCode:messageCode message:message contexts:@[]]; +} + +/// Returns a string for the given log level (e.g. kGULNetworkLogLevelError -> @"ERROR"). +static NSString *GULLogLevelDescriptionFromLogLevel(GULNetworkLogLevel logLevel) { + static NSDictionary *levelNames = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + levelNames = @{ + @(kGULNetworkLogLevelError) : @"ERROR", + @(kGULNetworkLogLevelWarning) : @"WARNING", + @(kGULNetworkLogLevelInfo) : @"INFO", + @(kGULNetworkLogLevelDebug) : @"DEBUG" + }; + }); + return levelNames[@(logLevel)]; +} + +/// Returns a formatted string to be used for console logging. +static NSString *GULStringWithLogMessage(NSString *message, + GULNetworkLogLevel logLevel, + NSArray *contexts) { + if (!message) { + message = @"(Message was nil)"; + } else if (!message.length) { + message = @"(Message was empty)"; + } + NSMutableString *result = [[NSMutableString alloc] + initWithFormat:@"<%@/%@> %@", kGULNetworkLogTag, GULLogLevelDescriptionFromLogLevel(logLevel), + message]; + + if (!contexts.count) { + return result; + } + + NSMutableArray *formattedContexts = [[NSMutableArray alloc] init]; + for (id item in contexts) { + [formattedContexts addObject:(item != [NSNull null] ? item : @"(nil)")]; + } + + [result appendString:@": "]; + [result appendString:[formattedContexts componentsJoinedByString:@", "]]; + return result; +} + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m b/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m new file mode 100644 index 0000000..dea8dbd --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m @@ -0,0 +1,40 @@ +// Copyright 2017 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "GoogleUtilities/Network/Private/GULNetworkConstants.h" + +#import + +NSString *const kGULNetworkBackgroundSessionConfigIDPrefix = @"com.gul.network.background-upload"; +NSString *const kGULNetworkApplicationSupportSubdirectory = @"GUL/Network"; +NSString *const kGULNetworkTempDirectoryName = @"GULNetworkTemporaryDirectory"; +const NSTimeInterval kGULNetworkTempFolderExpireTime = 60 * 60; // 1 hour +const NSTimeInterval kGULNetworkTimeOutInterval = 60; // 1 minute. +NSString *const kGULNetworkReachabilityHost = @"app-measurement.com"; +NSString *const kGULNetworkErrorContext = @"Context"; + +const int kGULNetworkHTTPStatusOK = 200; +const int kGULNetworkHTTPStatusNoContent = 204; +const int kGULNetworkHTTPStatusCodeMultipleChoices = 300; +const int kGULNetworkHTTPStatusCodeMovedPermanently = 301; +const int kGULNetworkHTTPStatusCodeFound = 302; +const int kGULNetworkHTTPStatusCodeNotModified = 304; +const int kGULNetworkHTTPStatusCodeMovedTemporarily = 307; +const int kGULNetworkHTTPStatusCodeNotFound = 404; +const int kGULNetworkHTTPStatusCodeCannotAcceptTraffic = 429; +const int kGULNetworkHTTPStatusCodeUnavailable = 503; + +NSString *const kGULNetworkErrorDomain = @"com.gul.network.ErrorDomain"; + +GULLoggerService kGULLoggerNetwork = @"[GULNetwork]"; diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m b/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m new file mode 100644 index 0000000..df8bf46 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m @@ -0,0 +1,762 @@ +// Copyright 2017 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +#import "GoogleUtilities/Network/Private/GULNetworkURLSession.h" + +#import +#import "GoogleUtilities/Network/Private/GULMutableDictionary.h" +#import "GoogleUtilities/Network/Private/GULNetworkConstants.h" +#import "GoogleUtilities/Network/Private/GULNetworkMessageCode.h" + +@interface GULNetworkURLSession () +@end + +@implementation GULNetworkURLSession { + /// The handler to be called when the request completes or error has occurs. + GULNetworkURLSessionCompletionHandler _completionHandler; + + /// Session ID generated randomly with a fixed prefix. + NSString *_sessionID; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" + /// The session configuration. NSURLSessionConfiguration' is only available on iOS 7.0 or newer. + NSURLSessionConfiguration *_sessionConfig; + + /// The current NSURLSession. + NSURLSession *__weak _Nullable _URLSession; +#pragma clang diagnostic pop + + /// The path to the directory where all temporary files are stored before uploading. + NSURL *_networkDirectoryURL; + + /// The downloaded data from fetching. + NSData *_downloadedData; + + /// The path to the temporary file which stores the uploading data. + NSURL *_uploadingFileURL; + + /// The current request. + NSURLRequest *_request; +} + +#pragma mark - Init + +- (instancetype)initWithNetworkLoggerDelegate:(id)networkLoggerDelegate { + self = [super init]; + if (self) { + // Create URL to the directory where all temporary files to upload have to be stored. + NSArray *paths = + NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + NSString *applicationSupportDirectory = paths.firstObject; + NSArray *tempPathComponents = @[ + applicationSupportDirectory, kGULNetworkApplicationSupportSubdirectory, + kGULNetworkTempDirectoryName + ]; + _networkDirectoryURL = [NSURL fileURLWithPathComponents:tempPathComponents]; + _sessionID = [NSString stringWithFormat:@"%@-%@", kGULNetworkBackgroundSessionConfigIDPrefix, + [[NSUUID UUID] UUIDString]]; + _loggerDelegate = networkLoggerDelegate; + } + return self; +} + +#pragma mark - External Methods + +#pragma mark - To be called from AppDelegate + ++ (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID + completionHandler: + (GULNetworkSystemCompletionHandler)systemCompletionHandler { + // The session may not be Analytics background. Ignore those that do not have the prefix. + if (![sessionID hasPrefix:kGULNetworkBackgroundSessionConfigIDPrefix]) { + return; + } + GULNetworkURLSession *fetcher = [self fetcherWithSessionIdentifier:sessionID]; + if (fetcher != nil) { + [fetcher addSystemCompletionHandler:systemCompletionHandler forSession:sessionID]; + } else { + GULLogError(kGULLoggerNetwork, NO, + [NSString stringWithFormat:@"I-NET%06ld", (long)kGULNetworkMessageCodeNetwork003], + @"Failed to retrieve background session with ID %@ after app is relaunched.", + sessionID); + } +} + +#pragma mark - External Methods + +/// Sends an async POST request using NSURLSession for iOS >= 7.0, and returns an ID of the +/// connection. +- (nullable NSString *)sessionIDFromAsyncPOSTRequest:(NSURLRequest *)request + completionHandler:(GULNetworkURLSessionCompletionHandler)handler + API_AVAILABLE(ios(7.0)) { + // NSURLSessionUploadTask does not work with NSData in the background. + // To avoid this issue, write the data to a temporary file to upload it. + // Make a temporary file with the data subset. + _uploadingFileURL = [self temporaryFilePathWithSessionID:_sessionID]; + NSError *writeError; + NSURLSessionUploadTask *postRequestTask; + NSURLSession *session; + BOOL didWriteFile = NO; + + // Clean up the entire temp folder to avoid temp files that remain in case the previous session + // crashed and did not clean up. + [self maybeRemoveTempFilesAtURL:_networkDirectoryURL + expiringTime:kGULNetworkTempFolderExpireTime]; + + // If there is no background network enabled, no need to write to file. This will allow default + // network session which runs on the foreground. + if (_backgroundNetworkEnabled && [self ensureTemporaryDirectoryExists]) { + didWriteFile = [request.HTTPBody writeToFile:_uploadingFileURL.path + options:NSDataWritingAtomic + error:&writeError]; + + if (writeError) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession000 + message:@"Failed to write request data to file" + context:writeError]; + } + } + + if (didWriteFile) { + // Exclude this file from backing up to iTunes. There are conflicting reports that excluding + // directory from backing up does not exclude files of that directory from backing up. + [self excludeFromBackupForURL:_uploadingFileURL]; + + _sessionConfig = [self backgroundSessionConfigWithSessionID:_sessionID]; + [self populateSessionConfig:_sessionConfig withRequest:request]; + session = [NSURLSession sessionWithConfiguration:_sessionConfig + delegate:self + delegateQueue:[NSOperationQueue mainQueue]]; + postRequestTask = [session uploadTaskWithRequest:request fromFile:_uploadingFileURL]; + } else { + // If we cannot write to file, just send it in the foreground. + _sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; + [self populateSessionConfig:_sessionConfig withRequest:request]; + session = [NSURLSession sessionWithConfiguration:_sessionConfig + delegate:self + delegateQueue:[NSOperationQueue mainQueue]]; + postRequestTask = [session uploadTaskWithRequest:request fromData:request.HTTPBody]; + } + + if (!session || !postRequestTask) { + NSError *error = [[NSError alloc] + initWithDomain:kGULNetworkErrorDomain + code:GULErrorCodeNetworkRequestCreation + userInfo:@{kGULNetworkErrorContext : @"Cannot create network session"}]; + [self callCompletionHandler:handler withResponse:nil data:nil error:error]; + return nil; + } + + _URLSession = session; + + // Save the session into memory. + [[self class] setSessionInFetcherMap:self forSessionID:_sessionID]; + + _request = [request copy]; + + // Store completion handler because background session does not accept handler block but custom + // delegate. + _completionHandler = [handler copy]; + [postRequestTask resume]; + + return _sessionID; +} + +/// Sends an async GET request using NSURLSession for iOS >= 7.0, and returns an ID of the session. +- (nullable NSString *)sessionIDFromAsyncGETRequest:(NSURLRequest *)request + completionHandler:(GULNetworkURLSessionCompletionHandler)handler + API_AVAILABLE(ios(7.0)) { + if (_backgroundNetworkEnabled) { + _sessionConfig = [self backgroundSessionConfigWithSessionID:_sessionID]; + } else { + _sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; + } + + [self populateSessionConfig:_sessionConfig withRequest:request]; + + // Do not cache the GET request. + _sessionConfig.URLCache = nil; + + NSURLSession *session = [NSURLSession sessionWithConfiguration:_sessionConfig + delegate:self + delegateQueue:[NSOperationQueue mainQueue]]; + NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request]; + + if (!session || !downloadTask) { + NSError *error = [[NSError alloc] + initWithDomain:kGULNetworkErrorDomain + code:GULErrorCodeNetworkRequestCreation + userInfo:@{kGULNetworkErrorContext : @"Cannot create network session"}]; + [self callCompletionHandler:handler withResponse:nil data:nil error:error]; + return nil; + } + + _URLSession = session; + + // Save the session into memory. + [[self class] setSessionInFetcherMap:self forSessionID:_sessionID]; + + _request = [request copy]; + + _completionHandler = [handler copy]; + [downloadTask resume]; + + return _sessionID; +} + +#pragma mark - NSURLSessionDataDelegate + +/// Called by the NSURLSession when the data task has received some of the expected data. +/// Once the session is completed, URLSession:task:didCompleteWithError will be called and the +/// completion handler will be called with the downloaded data. +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data { + @synchronized(self) { + NSMutableData *mutableData = [[NSMutableData alloc] init]; + if (_downloadedData) { + mutableData = _downloadedData.mutableCopy; + } + [mutableData appendData:data]; + _downloadedData = mutableData; + } +} + +#pragma mark - NSURLSessionTaskDelegate + +/// Called by the NSURLSession once the download task is completed. The file is saved in the +/// provided URL so we need to read the data and store into _downloadedData. Once the session is +/// completed, URLSession:task:didCompleteWithError will be called and the completion handler will +/// be called with the downloaded data. +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)task + didFinishDownloadingToURL:(NSURL *)url API_AVAILABLE(ios(7.0)) { + if (!url.path) { + [_loggerDelegate + GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession001 + message:@"Unable to read downloaded data from empty temp path"]; + _downloadedData = nil; + return; + } + + NSError *error; + _downloadedData = [NSData dataWithContentsOfFile:url.path options:0 error:&error]; + + if (error) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession002 + message:@"Cannot read the content of downloaded data" + context:error]; + _downloadedData = nil; + } +} + +#if TARGET_OS_IOS || TARGET_OS_TV +- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session + API_AVAILABLE(ios(7.0)) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelDebug + messageCode:kGULNetworkMessageCodeURLSession003 + message:@"Background session finished" + context:session.configuration.identifier]; + [self callSystemCompletionHandler:session.configuration.identifier]; +} +#endif + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didCompleteWithError:(NSError *)error API_AVAILABLE(ios(7.0)) { + // Avoid any chance of recursive behavior leading to it being used repeatedly. + GULNetworkURLSessionCompletionHandler handler = _completionHandler; + _completionHandler = nil; + + if (task.response) { + // The following assertion should always be true for HTTP requests, see https://goo.gl/gVLxT7. + NSAssert([task.response isKindOfClass:[NSHTTPURLResponse class]], @"URL response must be HTTP"); + + // The server responded so ignore the error created by the system. + error = nil; + } else if (!error) { + error = [[NSError alloc] + initWithDomain:kGULNetworkErrorDomain + code:GULErrorCodeNetworkInvalidResponse + userInfo:@{kGULNetworkErrorContext : @"Network Error: Empty network response"}]; + } + + [self callCompletionHandler:handler + withResponse:(NSHTTPURLResponse *)task.response + data:_downloadedData + error:error]; + + // Remove the temp file to avoid trashing devices with lots of temp files. + [self removeTempItemAtURL:_uploadingFileURL]; + + // Try to clean up stale files again. + [self maybeRemoveTempFilesAtURL:_networkDirectoryURL + expiringTime:kGULNetworkTempFolderExpireTime]; + + // This is called without checking the sessionID here since non-background sessions + // won't have an ID. + [session finishTasksAndInvalidate]; + + // Explicitly remove the session so it won't be reused. The weak map table should + // remove the session on deallocation, but dealloc may not happen immediately after + // calling `finishTasksAndInvalidate`. + NSString *sessionID = session.configuration.identifier; + [[self class] setSessionInFetcherMap:nil forSessionID:sessionID]; +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential *credential))completionHandler + API_AVAILABLE(ios(7.0)) { + // The handling is modeled after GTMSessionFetcher. + if ([challenge.protectionSpace.authenticationMethod + isEqualToString:NSURLAuthenticationMethodServerTrust]) { + SecTrustRef serverTrust = challenge.protectionSpace.serverTrust; + if (serverTrust == NULL) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelDebug + messageCode:kGULNetworkMessageCodeURLSession004 + message:@"Received empty server trust for host. Host" + context:_request.URL]; + completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil); + return; + } + NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; + if (!credential) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelWarning + messageCode:kGULNetworkMessageCodeURLSession005 + message:@"Unable to verify server identity. Host" + context:_request.URL]; + completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil); + return; + } + + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelDebug + messageCode:kGULNetworkMessageCodeURLSession006 + message:@"Received SSL challenge for host. Host" + context:_request.URL]; + + void (^callback)(BOOL) = ^(BOOL allow) { + if (allow) { + completionHandler(NSURLSessionAuthChallengeUseCredential, credential); + } else { + [self->_loggerDelegate + GULNetwork_logWithLevel:kGULNetworkLogLevelDebug + messageCode:kGULNetworkMessageCodeURLSession007 + message:@"Cancelling authentication challenge for host. Host" + context:self->_request.URL]; + completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil); + } + }; + + // Retain the trust object to avoid a SecTrustEvaluate() crash on iOS 7. + CFRetain(serverTrust); + + // Evaluate the certificate chain. + // + // The delegate queue may be the main thread. Trust evaluation could cause some + // blocking network activity, so we must evaluate async, as documented at + // https://developer.apple.com/library/ios/technotes/tn2232/ + dispatch_queue_t evaluateBackgroundQueue = + dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + + dispatch_async(evaluateBackgroundQueue, ^{ + SecTrustResultType trustEval = kSecTrustResultInvalid; + BOOL shouldAllow; + OSStatus trustError; + + @synchronized([GULNetworkURLSession class]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + trustError = SecTrustEvaluate(serverTrust, &trustEval); +#pragma clang dianostic pop + } + + if (trustError != errSecSuccess) { + [self->_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession008 + message:@"Cannot evaluate server trust. Error, host" + contexts:@[ @(trustError), self->_request.URL ]]; + shouldAllow = NO; + } else { + // Having a trust level "unspecified" by the user is the usual result, described at + // https://developer.apple.com/library/mac/qa/qa1360 + shouldAllow = + (trustEval == kSecTrustResultUnspecified || trustEval == kSecTrustResultProceed); + } + + // Call the call back with the permission. + callback(shouldAllow); + + CFRelease(serverTrust); + }); + return; + } + + // Default handling for other Auth Challenges. + completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil); +} + +#pragma mark - Internal Methods + +/// Stores system completion handler with session ID as key. +- (void)addSystemCompletionHandler:(GULNetworkSystemCompletionHandler)handler + forSession:(NSString *)identifier { + if (!handler) { + [_loggerDelegate + GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession009 + message:@"Cannot store nil system completion handler in network"]; + return; + } + + if (!identifier.length) { + [_loggerDelegate + GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession010 + message:@"Cannot store system completion handler with empty network " + "session identifier"]; + return; + } + + GULMutableDictionary *systemCompletionHandlers = + [[self class] sessionIDToSystemCompletionHandlerDictionary]; + if (systemCompletionHandlers[identifier]) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelWarning + messageCode:kGULNetworkMessageCodeURLSession011 + message:@"Got multiple system handlers for a single session ID" + context:identifier]; + } + + systemCompletionHandlers[identifier] = handler; +} + +/// Calls the system provided completion handler with the session ID stored in the dictionary. +/// The handler will be removed from the dictionary after being called. +- (void)callSystemCompletionHandler:(NSString *)identifier { + GULMutableDictionary *systemCompletionHandlers = + [[self class] sessionIDToSystemCompletionHandlerDictionary]; + GULNetworkSystemCompletionHandler handler = [systemCompletionHandlers objectForKey:identifier]; + + if (handler) { + [systemCompletionHandlers removeObjectForKey:identifier]; + + dispatch_async(dispatch_get_main_queue(), ^{ + handler(); + }); + } +} + +/// Sets or updates the session ID of this session. +- (void)setSessionID:(NSString *)sessionID { + _sessionID = [sessionID copy]; +} + +/// Creates a background session configuration with the session ID using the supported method. +- (NSURLSessionConfiguration *)backgroundSessionConfigWithSessionID:(NSString *)sessionID + API_AVAILABLE(ios(7.0)) { +#if (TARGET_OS_OSX && defined(MAC_OS_X_VERSION_10_10) && \ + MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) || \ + TARGET_OS_TV || \ + (TARGET_OS_IOS && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0) + + // iOS 8/10.10 builds require the new backgroundSessionConfiguration method name. + return [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionID]; + +#elif (TARGET_OS_OSX && defined(MAC_OS_X_VERSION_10_10) && \ + MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10) || \ + (TARGET_OS_IOS && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0) + + // Do a runtime check to avoid a deprecation warning about using + // +backgroundSessionConfiguration: on iOS 8. + if ([NSURLSessionConfiguration + respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) { + // Running on iOS 8+/OS X 10.10+. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" + return [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionID]; +#pragma clang diagnostic pop + } else { + // Running on iOS 7/OS X 10.9. + return [NSURLSessionConfiguration backgroundSessionConfiguration:sessionID]; + } + +#else + // Building with an SDK earlier than iOS 8/OS X 10.10. + return [NSURLSessionConfiguration backgroundSessionConfiguration:sessionID]; +#endif +} + +- (void)maybeRemoveTempFilesAtURL:(NSURL *)folderURL expiringTime:(NSTimeInterval)staleTime { + if (!folderURL.absoluteString.length) { + return; + } + + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSError *error = nil; + + NSArray *properties = @[ NSURLCreationDateKey ]; + NSArray *directoryContent = + [fileManager contentsOfDirectoryAtURL:folderURL + includingPropertiesForKeys:properties + options:NSDirectoryEnumerationSkipsSubdirectoryDescendants + error:&error]; + if (error && error.code != NSFileReadNoSuchFileError) { + [_loggerDelegate + GULNetwork_logWithLevel:kGULNetworkLogLevelDebug + messageCode:kGULNetworkMessageCodeURLSession012 + message:@"Cannot get files from the temporary network folder. Error" + context:error]; + return; + } + + if (!directoryContent.count) { + return; + } + + NSTimeInterval now = [NSDate date].timeIntervalSince1970; + for (NSURL *tempFile in directoryContent) { + NSDate *creationDate; + BOOL getCreationDate = [tempFile getResourceValue:&creationDate + forKey:NSURLCreationDateKey + error:NULL]; + if (!getCreationDate) { + continue; + } + NSTimeInterval creationTimeInterval = creationDate.timeIntervalSince1970; + if (fabs(now - creationTimeInterval) > staleTime) { + [self removeTempItemAtURL:tempFile]; + } + } +} + +/// Removes the temporary file written to disk for sending the request. It has to be cleaned up +/// after the session is done. +- (void)removeTempItemAtURL:(NSURL *)fileURL { + if (!fileURL.absoluteString.length) { + return; + } + + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSError *error = nil; + + if (![fileManager removeItemAtURL:fileURL error:&error] && error.code != NSFileNoSuchFileError) { + [_loggerDelegate + GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession013 + message:@"Failed to remove temporary uploading data file. Error" + context:error.localizedDescription]; + } +} + +/// Gets the fetcher with the session ID. ++ (instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier { + GULNetworkURLSession *session = [self sessionFromFetcherMapForSessionID:sessionIdentifier]; + if (!session && [sessionIdentifier hasPrefix:kGULNetworkBackgroundSessionConfigIDPrefix]) { + session = [[GULNetworkURLSession alloc] initWithNetworkLoggerDelegate:nil]; + [session setSessionID:sessionIdentifier]; + [self setSessionInFetcherMap:session forSessionID:sessionIdentifier]; + } + return session; +} + +/// Returns a map of the fetcher by session ID. Creates a map if it is not created. +/// When reading and writing from/to the session map, don't use this method directly. +/// To avoid thread safety issues, use one of the helper methods at the bottom of the +/// file: setSessionInFetcherMap:forSessionID:, sessionFromFetcherMapForSessionID: ++ (NSMapTable *)sessionIDToFetcherMap { + static NSMapTable *sessionIDToFetcherMap; + + static dispatch_once_t sessionMapOnceToken; + dispatch_once(&sessionMapOnceToken, ^{ + sessionIDToFetcherMap = [NSMapTable strongToWeakObjectsMapTable]; + }); + return sessionIDToFetcherMap; +} + ++ (NSLock *)sessionIDToFetcherMapReadWriteLock { + static NSLock *lock; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + lock = [[NSLock alloc] init]; + }); + return lock; +} + +/// Returns a map of system provided completion handler by session ID. Creates a map if it is not +/// created. ++ (GULMutableDictionary *)sessionIDToSystemCompletionHandlerDictionary { + static GULMutableDictionary *systemCompletionHandlers; + + static dispatch_once_t systemCompletionHandlerOnceToken; + dispatch_once(&systemCompletionHandlerOnceToken, ^{ + systemCompletionHandlers = [[GULMutableDictionary alloc] init]; + }); + return systemCompletionHandlers; +} + +- (NSURL *)temporaryFilePathWithSessionID:(NSString *)sessionID { + NSString *tempName = [NSString stringWithFormat:@"GULUpload_temp_%@", sessionID]; + return [_networkDirectoryURL URLByAppendingPathComponent:tempName]; +} + +/// Makes sure that the directory to store temp files exists. If not, tries to create it and returns +/// YES. If there is anything wrong, returns NO. +- (BOOL)ensureTemporaryDirectoryExists { + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSError *error = nil; + + // Create a temporary directory if it does not exist or was deleted. + if ([_networkDirectoryURL checkResourceIsReachableAndReturnError:&error]) { + return YES; + } + + if (error && error.code != NSFileReadNoSuchFileError) { + [_loggerDelegate + GULNetwork_logWithLevel:kGULNetworkLogLevelWarning + messageCode:kGULNetworkMessageCodeURLSession014 + message:@"Error while trying to access Network temp folder. Error" + context:error]; + } + + NSError *writeError = nil; + + [fileManager createDirectoryAtURL:_networkDirectoryURL + withIntermediateDirectories:YES + attributes:nil + error:&writeError]; + if (writeError) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession015 + message:@"Cannot create temporary directory. Error" + context:writeError]; + return NO; + } + + // Set the iCloud exclusion attribute on the Documents URL. + [self excludeFromBackupForURL:_networkDirectoryURL]; + + return YES; +} + +- (void)excludeFromBackupForURL:(NSURL *)url { + if (!url.path) { + return; + } + + // Set the iCloud exclusion attribute on the Documents URL. + NSError *preventBackupError = nil; + [url setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:&preventBackupError]; + if (preventBackupError) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession016 + message:@"Cannot exclude temporary folder from iTunes backup"]; + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + willPerformHTTPRedirection:(NSHTTPURLResponse *)response + newRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLRequest *))completionHandler API_AVAILABLE(ios(7.0)) { + NSArray *nonAllowedRedirectionCodes = @[ + @(kGULNetworkHTTPStatusCodeFound), @(kGULNetworkHTTPStatusCodeMovedPermanently), + @(kGULNetworkHTTPStatusCodeMovedTemporarily), @(kGULNetworkHTTPStatusCodeMultipleChoices) + ]; + + // Allow those not in the non allowed list to be followed. + if (![nonAllowedRedirectionCodes containsObject:@(response.statusCode)]) { + completionHandler(request); + return; + } + + // Do not allow redirection if the response code is in the non-allowed list. + NSURLRequest *newRequest = request; + + if (response) { + newRequest = nil; + } + + completionHandler(newRequest); +} + +#pragma mark - Helper Methods + ++ (void)setSessionInFetcherMap:(GULNetworkURLSession *)session forSessionID:(NSString *)sessionID { + [[self sessionIDToFetcherMapReadWriteLock] lock]; + GULNetworkURLSession *existingSession = + [[[self class] sessionIDToFetcherMap] objectForKey:sessionID]; + if (existingSession) { + if (session) { + NSString *message = [NSString stringWithFormat:@"Discarding session: %@", existingSession]; + [existingSession->_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelInfo + messageCode:kGULNetworkMessageCodeURLSession019 + message:message]; + } + [existingSession->_URLSession finishTasksAndInvalidate]; + } + if (session) { + [[[self class] sessionIDToFetcherMap] setObject:session forKey:sessionID]; + } else { + [[[self class] sessionIDToFetcherMap] removeObjectForKey:sessionID]; + } + [[self sessionIDToFetcherMapReadWriteLock] unlock]; +} + ++ (nullable GULNetworkURLSession *)sessionFromFetcherMapForSessionID:(NSString *)sessionID { + [[self sessionIDToFetcherMapReadWriteLock] lock]; + GULNetworkURLSession *session = [[[self class] sessionIDToFetcherMap] objectForKey:sessionID]; + [[self sessionIDToFetcherMapReadWriteLock] unlock]; + return session; +} + +- (void)callCompletionHandler:(GULNetworkURLSessionCompletionHandler)handler + withResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *)error { + if (error) { + [_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError + messageCode:kGULNetworkMessageCodeURLSession017 + message:@"Encounter network error. Code, error" + contexts:@[ @(error.code), error ]]; + } + + if (handler) { + dispatch_async(dispatch_get_main_queue(), ^{ + handler(response, data, self->_sessionID, error); + }); + } +} + +// Always use the request parameters even if the default session configuration is more restrictive. +- (void)populateSessionConfig:(NSURLSessionConfiguration *)sessionConfig + withRequest:(NSURLRequest *)request API_AVAILABLE(ios(7.0)) { + sessionConfig.HTTPAdditionalHeaders = request.allHTTPHeaderFields; + sessionConfig.timeoutIntervalForRequest = request.timeoutInterval; + sessionConfig.timeoutIntervalForResource = request.timeoutInterval; + sessionConfig.requestCachePolicy = request.cachePolicy; +} + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULMutableDictionary.h b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULMutableDictionary.h new file mode 100644 index 0000000..a8cc45b --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULMutableDictionary.h @@ -0,0 +1,46 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +/// A mutable dictionary that provides atomic accessor and mutators. +@interface GULMutableDictionary : NSObject + +/// Returns an object given a key in the dictionary or nil if not found. +- (id)objectForKey:(id)key; + +/// Updates the object given its key or adds it to the dictionary if it is not in the dictionary. +- (void)setObject:(id)object forKey:(id)key; + +/// Removes the object given its session ID from the dictionary. +- (void)removeObjectForKey:(id)key; + +/// Removes all objects. +- (void)removeAllObjects; + +/// Returns the number of current objects in the dictionary. +- (NSUInteger)count; + +/// Returns an object given a key in the dictionary or nil if not found. +- (id)objectForKeyedSubscript:(id)key; + +/// Updates the object given its key or adds it to the dictionary if it is not in the dictionary. +- (void)setObject:(id)obj forKeyedSubscript:(id)key; + +/// Returns the immutable dictionary. +- (NSDictionary *)dictionary; + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetwork.h b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetwork.h new file mode 100644 index 0000000..0e75ae5 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetwork.h @@ -0,0 +1,87 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import "GULNetworkConstants.h" +#import "GULNetworkLoggerProtocol.h" +#import "GULNetworkURLSession.h" + +/// Delegate protocol for GULNetwork events. +@protocol GULNetworkReachabilityDelegate + +/// Tells the delegate to handle events when the network reachability changes to connected or not +/// connected. +- (void)reachabilityDidChange; + +@end + +/// The Network component that provides network status and handles network requests and responses. +/// This is not thread safe. +/// +/// NOTE: +/// User must add FIRAnalytics handleEventsForBackgroundURLSessionID:completionHandler to the +/// AppDelegate application:handleEventsForBackgroundURLSession:completionHandler: +@interface GULNetwork : NSObject + +/// Indicates if network connectivity is available. +@property(nonatomic, readonly, getter=isNetworkConnected) BOOL networkConnected; + +/// Indicates if there are any uploads in progress. +@property(nonatomic, readonly, getter=hasUploadInProgress) BOOL uploadInProgress; + +/// An optional delegate that can be used in the event when network reachability changes. +@property(nonatomic, weak) id reachabilityDelegate; + +/// An optional delegate that can be used to log messages, warnings or errors that occur in the +/// network operations. +@property(nonatomic, weak) id loggerDelegate; + +/// Indicates whether the logger should display debug messages. +@property(nonatomic, assign) BOOL isDebugModeEnabled; + +/// The time interval in seconds for the network request to timeout. +@property(nonatomic, assign) NSTimeInterval timeoutInterval; + +/// Initializes with the default reachability host. +- (instancetype)init; + +/// Initializes with a custom reachability host. +- (instancetype)initWithReachabilityHost:(NSString *)reachabilityHost; + +/// Handles events when background session with the given ID has finished. ++ (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID + completionHandler:(GULNetworkSystemCompletionHandler)completionHandler; + +/// Compresses and sends a POST request with the provided data to the URL. The session will be +/// background session if usingBackgroundSession is YES. Otherwise, the POST session is default +/// session. Returns a session ID or nil if an error occurs. +- (NSString *)postURL:(NSURL *)url + payload:(NSData *)payload + queue:(dispatch_queue_t)queue + usingBackgroundSession:(BOOL)usingBackgroundSession + completionHandler:(GULNetworkCompletionHandler)handler; + +/// Sends a GET request with the provided data to the URL. The session will be background session +/// if usingBackgroundSession is YES. Otherwise, the GET session is default session. Returns a +/// session ID or nil if an error occurs. +- (NSString *)getURL:(NSURL *)url + headers:(NSDictionary *)headers + queue:(dispatch_queue_t)queue + usingBackgroundSession:(BOOL)usingBackgroundSession + completionHandler:(GULNetworkCompletionHandler)handler; + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkConstants.h b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkConstants.h new file mode 100644 index 0000000..44d440b --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkConstants.h @@ -0,0 +1,79 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import + +/// Error codes in Firebase Network error domain. +/// Note: these error codes should never change. It would make it harder to decode the errors if +/// we inadvertently altered any of these codes in a future SDK version. +typedef NS_ENUM(NSInteger, GULNetworkErrorCode) { + /// Unknown error. + GULNetworkErrorCodeUnknown = 0, + /// Error occurs when the request URL is invalid. + GULErrorCodeNetworkInvalidURL = 1, + /// Error occurs when request cannot be constructed. + GULErrorCodeNetworkRequestCreation = 2, + /// Error occurs when payload cannot be compressed. + GULErrorCodeNetworkPayloadCompression = 3, + /// Error occurs when session task cannot be created. + GULErrorCodeNetworkSessionTaskCreation = 4, + /// Error occurs when there is no response. + GULErrorCodeNetworkInvalidResponse = 5 +}; + +#pragma mark - Network constants + +/// The prefix of the ID of the background session. +extern NSString *const kGULNetworkBackgroundSessionConfigIDPrefix; + +/// The sub directory to store the files of data that is being uploaded in the background. +extern NSString *const kGULNetworkApplicationSupportSubdirectory; + +/// Name of the temporary directory that stores files for background uploading. +extern NSString *const kGULNetworkTempDirectoryName; + +/// The period when the temporary uploading file can stay. +extern const NSTimeInterval kGULNetworkTempFolderExpireTime; + +/// The default network request timeout interval. +extern const NSTimeInterval kGULNetworkTimeOutInterval; + +/// The host to check the reachability of the network. +extern NSString *const kGULNetworkReachabilityHost; + +/// The key to get the error context of the UserInfo. +extern NSString *const kGULNetworkErrorContext; + +#pragma mark - Network Status Code + +extern const int kGULNetworkHTTPStatusOK; +extern const int kGULNetworkHTTPStatusNoContent; +extern const int kGULNetworkHTTPStatusCodeMultipleChoices; +extern const int kGULNetworkHTTPStatusCodeMovedPermanently; +extern const int kGULNetworkHTTPStatusCodeFound; +extern const int kGULNetworkHTTPStatusCodeNotModified; +extern const int kGULNetworkHTTPStatusCodeMovedTemporarily; +extern const int kGULNetworkHTTPStatusCodeNotFound; +extern const int kGULNetworkHTTPStatusCodeCannotAcceptTraffic; +extern const int kGULNetworkHTTPStatusCodeUnavailable; + +#pragma mark - Error Domain + +extern NSString *const kGULNetworkErrorDomain; + +/// The logger service for GULNetwork. +extern GULLoggerService kGULLoggerNetwork; diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h new file mode 100644 index 0000000..f1be590 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h @@ -0,0 +1,51 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import + +#import "GULNetworkMessageCode.h" + +/// The log levels used by GULNetworkLogger. +typedef NS_ENUM(NSInteger, GULNetworkLogLevel) { + kGULNetworkLogLevelError = GULLoggerLevelError, + kGULNetworkLogLevelWarning = GULLoggerLevelWarning, + kGULNetworkLogLevelInfo = GULLoggerLevelInfo, + kGULNetworkLogLevelDebug = GULLoggerLevelDebug, +}; + +@protocol GULNetworkLoggerDelegate + +@required +/// Tells the delegate to log a message with an array of contexts and the log level. +- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel + messageCode:(GULNetworkMessageCode)messageCode + message:(NSString *)message + contexts:(NSArray *)contexts; + +/// Tells the delegate to log a message with a context and the log level. +- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel + messageCode:(GULNetworkMessageCode)messageCode + message:(NSString *)message + context:(id)context; + +/// Tells the delegate to log a message with the log level. +- (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel + messageCode:(GULNetworkMessageCode)messageCode + message:(NSString *)message; + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkMessageCode.h b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkMessageCode.h new file mode 100644 index 0000000..507bc5a --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkMessageCode.h @@ -0,0 +1,47 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +// Make sure these codes do not overlap with any contained in the FIRAMessageCode enum. +typedef NS_ENUM(NSInteger, GULNetworkMessageCode) { + // GULNetwork.m + kGULNetworkMessageCodeNetwork000 = 900000, // I-NET900000 + kGULNetworkMessageCodeNetwork001 = 900001, // I-NET900001 + kGULNetworkMessageCodeNetwork002 = 900002, // I-NET900002 + kGULNetworkMessageCodeNetwork003 = 900003, // I-NET900003 + // GULNetworkURLSession.m + kGULNetworkMessageCodeURLSession000 = 901000, // I-NET901000 + kGULNetworkMessageCodeURLSession001 = 901001, // I-NET901001 + kGULNetworkMessageCodeURLSession002 = 901002, // I-NET901002 + kGULNetworkMessageCodeURLSession003 = 901003, // I-NET901003 + kGULNetworkMessageCodeURLSession004 = 901004, // I-NET901004 + kGULNetworkMessageCodeURLSession005 = 901005, // I-NET901005 + kGULNetworkMessageCodeURLSession006 = 901006, // I-NET901006 + kGULNetworkMessageCodeURLSession007 = 901007, // I-NET901007 + kGULNetworkMessageCodeURLSession008 = 901008, // I-NET901008 + kGULNetworkMessageCodeURLSession009 = 901009, // I-NET901009 + kGULNetworkMessageCodeURLSession010 = 901010, // I-NET901010 + kGULNetworkMessageCodeURLSession011 = 901011, // I-NET901011 + kGULNetworkMessageCodeURLSession012 = 901012, // I-NET901012 + kGULNetworkMessageCodeURLSession013 = 901013, // I-NET901013 + kGULNetworkMessageCodeURLSession014 = 901014, // I-NET901014 + kGULNetworkMessageCodeURLSession015 = 901015, // I-NET901015 + kGULNetworkMessageCodeURLSession016 = 901016, // I-NET901016 + kGULNetworkMessageCodeURLSession017 = 901017, // I-NET901017 + kGULNetworkMessageCodeURLSession018 = 901018, // I-NET901018 + kGULNetworkMessageCodeURLSession019 = 901019, // I-NET901019 +}; diff --git a/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkURLSession.h b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkURLSession.h new file mode 100644 index 0000000..3f9f7f9 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Network/Private/GULNetworkURLSession.h @@ -0,0 +1,62 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import "GULNetworkLoggerProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^GULNetworkCompletionHandler)(NSHTTPURLResponse *_Nullable response, + NSData *_Nullable data, + NSError *_Nullable error); +typedef void (^GULNetworkURLSessionCompletionHandler)(NSHTTPURLResponse *_Nullable response, + NSData *_Nullable data, + NSString *sessionID, + NSError *_Nullable error); +typedef void (^GULNetworkSystemCompletionHandler)(void); + +/// The protocol that uses NSURLSession for iOS >= 7.0 to handle requests and responses. +@interface GULNetworkURLSession : NSObject + +/// Indicates whether the background network is enabled. Default value is NO. +@property(nonatomic, getter=isBackgroundNetworkEnabled) BOOL backgroundNetworkEnabled; + +/// The logger delegate to log message, errors or warnings that occur during the network operations. +@property(nonatomic, weak, nullable) id loggerDelegate; + +/// Calls the system provided completion handler after the background session is finished. ++ (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID + completionHandler:(GULNetworkSystemCompletionHandler)completionHandler; + +/// Initializes with logger delegate. +- (instancetype)initWithNetworkLoggerDelegate: + (nullable id)networkLoggerDelegate NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; + +/// Sends an asynchronous POST request and calls the provided completion handler when the request +/// completes or when errors occur, and returns an ID of the session/connection. +- (nullable NSString *)sessionIDFromAsyncPOSTRequest:(NSURLRequest *)request + completionHandler:(GULNetworkURLSessionCompletionHandler)handler; + +/// Sends an asynchronous GET request and calls the provided completion handler when the request +/// completes or when errors occur, and returns an ID of the session. +- (nullable NSString *)sessionIDFromAsyncGETRequest:(NSURLRequest *)request + completionHandler:(GULNetworkURLSessionCompletionHandler)handler; + +NS_ASSUME_NONNULL_END +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h b/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h new file mode 100644 index 0000000..8aabc8a --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h @@ -0,0 +1,47 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#if !TARGET_OS_WATCH +typedef SCNetworkReachabilityRef (*GULReachabilityCreateWithNameFn)(CFAllocatorRef allocator, + const char *host); + +typedef Boolean (*GULReachabilitySetCallbackFn)(SCNetworkReachabilityRef target, + SCNetworkReachabilityCallBack callback, + SCNetworkReachabilityContext *context); +typedef Boolean (*GULReachabilityScheduleWithRunLoopFn)(SCNetworkReachabilityRef target, + CFRunLoopRef runLoop, + CFStringRef runLoopMode); +typedef Boolean (*GULReachabilityUnscheduleFromRunLoopFn)(SCNetworkReachabilityRef target, + CFRunLoopRef runLoop, + CFStringRef runLoopMode); + +typedef void (*GULReachabilityReleaseFn)(CFTypeRef cf); + +struct GULReachabilityApi { + GULReachabilityCreateWithNameFn createWithNameFn; + GULReachabilitySetCallbackFn setCallbackFn; + GULReachabilityScheduleWithRunLoopFn scheduleWithRunLoopFn; + GULReachabilityUnscheduleFromRunLoopFn unscheduleFromRunLoopFn; + GULReachabilityReleaseFn releaseFn; +}; +#endif +@interface GULReachabilityChecker (Internal) + +- (const struct GULReachabilityApi *)reachabilityApi; +- (void)setReachabilityApi:(const struct GULReachabilityApi *)reachabilityApi; + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m b/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m new file mode 100644 index 0000000..a334c1a --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m @@ -0,0 +1,263 @@ +// Copyright 2017 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import + +#import "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h" +#import "GoogleUtilities/Reachability/Private/GULReachabilityChecker.h" +#import "GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h" + +#import +#import + +static GULLoggerService kGULLoggerReachability = @"[GULReachability]"; +#if !TARGET_OS_WATCH +static void ReachabilityCallback(SCNetworkReachabilityRef reachability, + SCNetworkReachabilityFlags flags, + void *info); + +static const struct GULReachabilityApi kGULDefaultReachabilityApi = { + SCNetworkReachabilityCreateWithName, + SCNetworkReachabilitySetCallback, + SCNetworkReachabilityScheduleWithRunLoop, + SCNetworkReachabilityUnscheduleFromRunLoop, + CFRelease, +}; + +static NSString *const kGULReachabilityUnknownStatus = @"Unknown"; +static NSString *const kGULReachabilityConnectedStatus = @"Connected"; +static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; +#endif +@interface GULReachabilityChecker () + +@property(nonatomic, assign) const struct GULReachabilityApi *reachabilityApi; +@property(nonatomic, assign) GULReachabilityStatus reachabilityStatus; +@property(nonatomic, copy) NSString *host; +#if !TARGET_OS_WATCH +@property(nonatomic, assign) SCNetworkReachabilityRef reachability; +#endif + +@end + +@implementation GULReachabilityChecker + +@synthesize reachabilityApi = reachabilityApi_; +#if !TARGET_OS_WATCH +@synthesize reachability = reachability_; +#endif + +- (const struct GULReachabilityApi *)reachabilityApi { + return reachabilityApi_; +} + +- (void)setReachabilityApi:(const struct GULReachabilityApi *)reachabilityApi { +#if !TARGET_OS_WATCH + if (reachability_) { + GULLogError(kGULLoggerReachability, NO, + [NSString stringWithFormat:@"I-REA%06ld", (long)kGULReachabilityMessageCode000], + @"Cannot change reachability API while reachability is running. " + @"Call stop first."); + return; + } + reachabilityApi_ = reachabilityApi; +#endif +} + +@synthesize reachabilityStatus = reachabilityStatus_; +@synthesize host = host_; +@synthesize reachabilityDelegate = reachabilityDelegate_; + +- (BOOL)isActive { +#if !TARGET_OS_WATCH + return reachability_ != nil; +#else + return NO; +#endif +} + +- (void)setReachabilityDelegate:(id)reachabilityDelegate { + if (reachabilityDelegate && + (![(NSObject *)reachabilityDelegate conformsToProtocol:@protocol(GULReachabilityDelegate)])) { + GULLogError(kGULLoggerReachability, NO, + [NSString stringWithFormat:@"I-NET%06ld", (long)kGULReachabilityMessageCode005], + @"Reachability delegate doesn't conform to Reachability protocol."); + return; + } + reachabilityDelegate_ = reachabilityDelegate; +} + +- (instancetype)initWithReachabilityDelegate:(id)reachabilityDelegate + withHost:(NSString *)host { + self = [super init]; + + if (!host || !host.length) { + GULLogError(kGULLoggerReachability, NO, + [NSString stringWithFormat:@"I-REA%06ld", (long)kGULReachabilityMessageCode001], + @"Invalid host specified"); + return nil; + } + if (self) { +#if !TARGET_OS_WATCH + [self setReachabilityDelegate:reachabilityDelegate]; + reachabilityApi_ = &kGULDefaultReachabilityApi; + reachabilityStatus_ = kGULReachabilityUnknown; + host_ = [host copy]; + reachability_ = nil; +#endif + } + return self; +} + +- (void)dealloc { + reachabilityDelegate_ = nil; + [self stop]; +} + +- (BOOL)start { +#if TARGET_OS_WATCH + return NO; +#else + + if (!reachability_) { + reachability_ = reachabilityApi_->createWithNameFn(kCFAllocatorDefault, [host_ UTF8String]); + if (!reachability_) { + return NO; + } + SCNetworkReachabilityContext context = { + 0, /* version */ + (__bridge void *)(self), /* info (passed as last parameter to reachability callback) */ + NULL, /* retain */ + NULL, /* release */ + NULL /* copyDescription */ + }; + if (!reachabilityApi_->setCallbackFn(reachability_, ReachabilityCallback, &context) || + !reachabilityApi_->scheduleWithRunLoopFn(reachability_, CFRunLoopGetMain(), + kCFRunLoopCommonModes)) { + reachabilityApi_->releaseFn(reachability_); + reachability_ = nil; + + GULLogError(kGULLoggerReachability, NO, + [NSString stringWithFormat:@"I-REA%06ld", (long)kGULReachabilityMessageCode002], + @"Failed to start reachability handle"); + return NO; + } + } + GULLogDebug(kGULLoggerReachability, NO, + [NSString stringWithFormat:@"I-REA%06ld", (long)kGULReachabilityMessageCode003], + @"Monitoring the network status"); + return YES; +#endif +} + +- (void)stop { +#if !TARGET_OS_WATCH + if (reachability_) { + reachabilityStatus_ = kGULReachabilityUnknown; + reachabilityApi_->unscheduleFromRunLoopFn(reachability_, CFRunLoopGetMain(), + kCFRunLoopCommonModes); + reachabilityApi_->releaseFn(reachability_); + reachability_ = nil; + } +#endif +} + +#if !TARGET_OS_WATCH +- (GULReachabilityStatus)statusForFlags:(SCNetworkReachabilityFlags)flags { + GULReachabilityStatus status = kGULReachabilityNotReachable; + // If the Reachable flag is not set, we definitely don't have connectivity. + if (flags & kSCNetworkReachabilityFlagsReachable) { + // Reachable flag is set. Check further flags. + if (!(flags & kSCNetworkReachabilityFlagsConnectionRequired)) { +// Connection required flag is not set, so we have connectivity. +#if TARGET_OS_IOS || TARGET_OS_TV + status = (flags & kSCNetworkReachabilityFlagsIsWWAN) ? kGULReachabilityViaCellular + : kGULReachabilityViaWifi; +#elif TARGET_OS_OSX + status = kGULReachabilityViaWifi; +#endif + } else if ((flags & (kSCNetworkReachabilityFlagsConnectionOnDemand | + kSCNetworkReachabilityFlagsConnectionOnTraffic)) && + !(flags & kSCNetworkReachabilityFlagsInterventionRequired)) { +// If the connection on demand or connection on traffic flag is set, and user intervention +// is not required, we have connectivity. +#if TARGET_OS_IOS || TARGET_OS_TV + status = (flags & kSCNetworkReachabilityFlagsIsWWAN) ? kGULReachabilityViaCellular + : kGULReachabilityViaWifi; +#elif TARGET_OS_OSX + status = kGULReachabilityViaWifi; +#endif + } + } + return status; +} + +- (void)reachabilityFlagsChanged:(SCNetworkReachabilityFlags)flags { + GULReachabilityStatus status = [self statusForFlags:flags]; + if (reachabilityStatus_ != status) { + NSString *reachabilityStatusString; + if (status == kGULReachabilityUnknown) { + reachabilityStatusString = kGULReachabilityUnknownStatus; + } else { + reachabilityStatusString = (status == kGULReachabilityNotReachable) + ? kGULReachabilityDisconnectedStatus + : kGULReachabilityConnectedStatus; + } + + GULLogDebug(kGULLoggerReachability, NO, + [NSString stringWithFormat:@"I-REA%06ld", (long)kGULReachabilityMessageCode004], + @"Network status has changed. Code:%@, status:%@", @(status), + reachabilityStatusString); + reachabilityStatus_ = status; + [reachabilityDelegate_ reachability:self statusChanged:reachabilityStatus_]; + } +} + +#endif +@end + +#if !TARGET_OS_WATCH +static void ReachabilityCallback(SCNetworkReachabilityRef reachability, + SCNetworkReachabilityFlags flags, + void *info) { + GULReachabilityChecker *checker = (__bridge GULReachabilityChecker *)info; + [checker reachabilityFlagsChanged:flags]; +} +#endif + +// This function used to be at the top of the file, but it was moved here +// as a workaround for a suspected compiler bug. When compiled in Release mode +// and run on an iOS device with WiFi disabled, the reachability code crashed +// when calling SCNetworkReachabilityScheduleWithRunLoop, or shortly thereafter. +// After unsuccessfully trying to diagnose the cause of the crash, it was +// discovered that moving this function to the end of the file magically fixed +// the crash. If you are going to edit this file, exercise caution and make sure +// to test thoroughly with an iOS device under various network conditions. +const NSString *GULReachabilityStatusString(GULReachabilityStatus status) { + switch (status) { + case kGULReachabilityUnknown: + return @"Reachability Unknown"; + + case kGULReachabilityNotReachable: + return @"Not reachable"; + + case kGULReachabilityViaWifi: + return @"Reachable via Wifi"; + + case kGULReachabilityViaCellular: + return @"Reachable via Cellular Data"; + + default: + return [NSString stringWithFormat:@"Invalid reachability status %d", (int)status]; + } +} diff --git a/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityChecker.h b/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityChecker.h new file mode 100644 index 0000000..0c70c05 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityChecker.h @@ -0,0 +1,79 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#if !TARGET_OS_WATCH +#import +#endif + +/// Reachability Status +typedef enum { + kGULReachabilityUnknown, ///< Have not yet checked or been notified whether host is reachable. + kGULReachabilityNotReachable, ///< Host is not reachable. + kGULReachabilityViaWifi, ///< Host is reachable via Wifi. + kGULReachabilityViaCellular, ///< Host is reachable via cellular. +} GULReachabilityStatus; + +const NSString *GULReachabilityStatusString(GULReachabilityStatus status); + +@class GULReachabilityChecker; + +/// Google Analytics iOS Reachability Checker. +@protocol GULReachabilityDelegate +@required +/// Called when network status has changed. +- (void)reachability:(GULReachabilityChecker *)reachability + statusChanged:(GULReachabilityStatus)status; +@end + +/// Google Analytics iOS Network Status Checker. +@interface GULReachabilityChecker : NSObject + +/// The last known reachability status, or GULReachabilityStatusUnknown if the +/// checker is not active. +@property(nonatomic, readonly) GULReachabilityStatus reachabilityStatus; +/// The host to which reachability status is to be checked. +@property(nonatomic, copy, readonly) NSString *host; +/// The delegate to be notified of reachability status changes. +@property(nonatomic, weak) id reachabilityDelegate; +/// `YES` if the reachability checker is active, `NO` otherwise. +@property(nonatomic, readonly) BOOL isActive; + +/// Initialize the reachability checker. Note that you must call start to begin checking for and +/// receiving notifications about network status changes. +/// +/// @param reachabilityDelegate The delegate to be notified when reachability status to host +/// changes. +/// +/// @param host The name of the host. +/// +- (instancetype)initWithReachabilityDelegate:(id)reachabilityDelegate + withHost:(NSString *)host; + +- (instancetype)init NS_UNAVAILABLE; + +/// Start checking for reachability to the specified host. This has no effect if the status +/// checker is already checking for connectivity. +/// +/// @return `YES` if initiating status checking was successful or the status checking has already +/// been initiated, `NO` otherwise. +- (BOOL)start; + +/// Stop checking for reachability to the specified host. This has no effect if the status +/// checker is not checking for connectivity. +- (void)stop; + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h b/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h new file mode 100644 index 0000000..373e0af --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h @@ -0,0 +1,29 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +// Make sure these codes do not overlap with any contained in the FIRAMessageCode enum. +typedef NS_ENUM(NSInteger, GULReachabilityMessageCode) { + // GULReachabilityChecker.m + kGULReachabilityMessageCode000 = 902000, // I-NET902000 + kGULReachabilityMessageCode001 = 902001, // I-NET902001 + kGULReachabilityMessageCode002 = 902002, // I-NET902002 + kGULReachabilityMessageCode003 = 902003, // I-NET902003 + kGULReachabilityMessageCode004 = 902004, // I-NET902004 + kGULReachabilityMessageCode005 = 902005, // I-NET902005 + kGULReachabilityMessageCode006 = 902006, // I-NET902006 +}; diff --git a/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m b/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m new file mode 100644 index 0000000..b80e2af --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m @@ -0,0 +1,438 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "TargetConditionals.h" + +#import +#import +#import +#import +#import +#import "GoogleUtilities/Common/GULLoggerCodes.h" +#import "GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h" + +#import + +#if UISCENE_SUPPORTED +API_AVAILABLE(ios(13.0), tvos(13.0)) +typedef void (*GULOpenURLContextsIMP)(id, SEL, UIScene *, NSSet *); + +API_AVAILABLE(ios(13.0), tvos(13.0)) +typedef void (^GULSceneDelegateInterceptorCallback)(id); + +// The strings below are the keys for associated objects. +static char const *const kGULRealIMPBySelectorKey = "GUL_realIMPBySelector"; +static char const *const kGULRealClassKey = "GUL_realClass"; +#endif // UISCENE_SUPPORTED + +static GULLoggerService kGULLoggerSwizzler = @"[GoogleUtilities/SceneDelegateSwizzler]"; + +// Since Firebase SDKs also use this for app delegate proxying, in order to not be a breaking change +// we disable App Delegate proxying when either of these two flags are set to NO. + +/** Plist key that allows Firebase developers to disable App and Scene Delegate Proxying. */ +static NSString *const kGULFirebaseSceneDelegateProxyEnabledPlistKey = + @"FirebaseAppDelegateProxyEnabled"; + +/** Plist key that allows developers not using Firebase to disable App and Scene Delegate Proxying. + */ +static NSString *const kGULGoogleUtilitiesSceneDelegateProxyEnabledPlistKey = + @"GoogleUtilitiesAppDelegateProxyEnabled"; + +/** The prefix of the Scene Delegate. */ +static NSString *const kGULSceneDelegatePrefix = @"GUL_"; + +/** + * This class is necessary to store the delegates in an NSArray without retaining them. + * [NSValue valueWithNonRetainedObject] also provides this functionality, but does not provide a + * zeroing pointer. This will cause EXC_BAD_ACCESS when trying to access the object after it is + * dealloced. Instead, this container stores a weak, zeroing reference to the object, which + * automatically is set to nil by the runtime when the object is dealloced. + */ +@interface GULSceneZeroingWeakContainer : NSObject + +/** Stores a weak object. */ +@property(nonatomic, weak) id object; + +@end + +@implementation GULSceneZeroingWeakContainer +@end + +@implementation GULSceneDelegateSwizzler + +#pragma mark - Public methods + ++ (BOOL)isSceneDelegateProxyEnabled { + return [GULAppDelegateSwizzler isAppDelegateProxyEnabled]; +} + ++ (void)proxyOriginalSceneDelegate { +#if UISCENE_SUPPORTED + if ([GULAppEnvironmentUtil isAppExtension]) { + return; + } + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + if (@available(iOS 13.0, tvOS 13.0, *)) { + if (![GULSceneDelegateSwizzler isSceneDelegateProxyEnabled]) { + return; + } + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(handleSceneWillConnectToNotification:) + name:UISceneWillConnectNotification + object:nil]; + } + }); +#endif // UISCENE_SUPPORTED +} + +#if UISCENE_SUPPORTED ++ (GULSceneDelegateInterceptorID)registerSceneDelegateInterceptor:(id)interceptor { + NSAssert(interceptor, @"SceneDelegateProxy cannot add nil interceptor"); + NSAssert([interceptor conformsToProtocol:@protocol(UISceneDelegate)], + @"SceneDelegateProxy interceptor does not conform to UIApplicationDelegate"); + + if (!interceptor) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling000], + @"SceneDelegateProxy cannot add nil interceptor."); + return nil; + } + if (![interceptor conformsToProtocol:@protocol(UISceneDelegate)]) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling001], + @"SceneDelegateProxy interceptor does not conform to UIApplicationDelegate"); + return nil; + } + + // The ID should be the same given the same interceptor object. + NSString *interceptorID = + [NSString stringWithFormat:@"%@%p", kGULSceneDelegatePrefix, interceptor]; + if (!interceptorID.length) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling002], + @"SceneDelegateProxy cannot create Interceptor ID."); + return nil; + } + GULSceneZeroingWeakContainer *weakObject = [[GULSceneZeroingWeakContainer alloc] init]; + weakObject.object = interceptor; + [GULSceneDelegateSwizzler interceptors][interceptorID] = weakObject; + return interceptorID; +} + ++ (void)unregisterSceneDelegateInterceptorWithID:(GULSceneDelegateInterceptorID)interceptorID { + NSAssert(interceptorID, @"SceneDelegateProxy cannot unregister nil interceptor ID."); + NSAssert(((NSString *)interceptorID).length != 0, + @"SceneDelegateProxy cannot unregister empty interceptor ID."); + + if (!interceptorID) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling003], + @"SceneDelegateProxy cannot unregister empty interceptor ID."); + return; + } + + GULSceneZeroingWeakContainer *weakContainer = + [GULSceneDelegateSwizzler interceptors][interceptorID]; + if (!weakContainer.object) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling004], + @"SceneDelegateProxy cannot unregister interceptor that was not registered. " + "Interceptor ID %@", + interceptorID); + return; + } + + [[GULSceneDelegateSwizzler interceptors] removeObjectForKey:interceptorID]; +} + +#pragma mark - Helper methods + ++ (GULMutableDictionary *)interceptors { + static dispatch_once_t onceToken; + static GULMutableDictionary *sInterceptors; + dispatch_once(&onceToken, ^{ + sInterceptors = [[GULMutableDictionary alloc] init]; + }); + return sInterceptors; +} + ++ (void)clearInterceptors { + [[self interceptors] removeAllObjects]; +} + ++ (nullable NSValue *)originalImplementationForSelector:(SEL)selector object:(id)object { + NSDictionary *realImplementationBySelector = + objc_getAssociatedObject(object, &kGULRealIMPBySelectorKey); + return realImplementationBySelector[NSStringFromSelector(selector)]; +} + ++ (void)proxyDestinationSelector:(SEL)destinationSelector + implementationsFromSourceSelector:(SEL)sourceSelector + fromClass:(Class)sourceClass + toClass:(Class)destinationClass + realClass:(Class)realClass + storeDestinationImplementationTo: + (NSMutableDictionary *)destinationImplementationsBySelector { + [self addInstanceMethodWithDestinationSelector:destinationSelector + withImplementationFromSourceSelector:sourceSelector + fromClass:sourceClass + toClass:destinationClass]; + IMP sourceImplementation = + [GULSceneDelegateSwizzler implementationOfMethodSelector:destinationSelector + fromClass:realClass]; + NSValue *sourceImplementationPointer = [NSValue valueWithPointer:sourceImplementation]; + + NSString *destinationSelectorString = NSStringFromSelector(destinationSelector); + destinationImplementationsBySelector[destinationSelectorString] = sourceImplementationPointer; +} + +/** Copies a method identified by the methodSelector from one class to the other. After this method + * is called, performing [toClassInstance methodSelector] will be similar to calling + * [fromClassInstance methodSelector]. This method does nothing if toClass already has a method + * identified by methodSelector. + * + * @param methodSelector The SEL that identifies both the method on the fromClass as well as the + * one on the toClass. + * @param fromClass The class from which a method is sourced. + * @param toClass The class to which the method is added. If the class already has a method with + * the same selector, this has no effect. + */ ++ (void)addInstanceMethodWithSelector:(SEL)methodSelector + fromClass:(Class)fromClass + toClass:(Class)toClass { + [self addInstanceMethodWithDestinationSelector:methodSelector + withImplementationFromSourceSelector:methodSelector + fromClass:fromClass + toClass:toClass]; +} + +/** Copies a method identified by the sourceSelector from the fromClass as a method for the + * destinationSelector on the toClass. After this method is called, performing + * [toClassInstance destinationSelector] will be similar to calling + * [fromClassInstance sourceSelector]. This method does nothing if toClass already has a method + * identified by destinationSelector. + * + * @param destinationSelector The SEL that identifies the method on the toClass. + * @param sourceSelector The SEL that identifies the method on the fromClass. + * @param fromClass The class from which a method is sourced. + * @param toClass The class to which the method is added. If the class already has a method with + * the same selector, this has no effect. + */ ++ (void)addInstanceMethodWithDestinationSelector:(SEL)destinationSelector + withImplementationFromSourceSelector:(SEL)sourceSelector + fromClass:(Class)fromClass + toClass:(Class)toClass { + Method method = class_getInstanceMethod(fromClass, sourceSelector); + IMP methodIMP = method_getImplementation(method); + const char *types = method_getTypeEncoding(method); + if (!class_addMethod(toClass, destinationSelector, methodIMP, types)) { + GULLogWarning( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling009], + @"Cannot copy method to destination selector %@ as it already exists", + NSStringFromSelector(destinationSelector)); + } +} + +/** Gets the IMP of the instance method on the class identified by the selector. + * + * @param selector The selector of which the IMP is to be fetched. + * @param aClass The class from which the IMP is to be fetched. + * @return The IMP of the instance method identified by selector and aClass. + */ ++ (IMP)implementationOfMethodSelector:(SEL)selector fromClass:(Class)aClass { + Method aMethod = class_getInstanceMethod(aClass, selector); + return method_getImplementation(aMethod); +} + +/** Enumerates through all the interceptors and if they respond to a given selector, executes a + * GULSceneDelegateInterceptorCallback with the interceptor. + * + * @param methodSelector The SEL to check if an interceptor responds to. + * @param callback the GULSceneDelegateInterceptorCallback. + */ ++ (void)notifyInterceptorsWithMethodSelector:(SEL)methodSelector + callback:(GULSceneDelegateInterceptorCallback)callback + API_AVAILABLE(ios(13.0)) { + if (!callback) { + return; + } + + NSDictionary *interceptors = [GULSceneDelegateSwizzler interceptors].dictionary; + [interceptors enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + GULSceneZeroingWeakContainer *interceptorContainer = obj; + id interceptor = interceptorContainer.object; + if (!interceptor) { + GULLogWarning( + kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling010], + @"SceneDelegateProxy cannot find interceptor with ID %@. Removing the interceptor.", key); + [[GULSceneDelegateSwizzler interceptors] removeObjectForKey:key]; + return; + } + if ([interceptor respondsToSelector:methodSelector]) { + callback(interceptor); + } + }]; +} + ++ (void)handleSceneWillConnectToNotification:(NSNotification *)notification { + if (@available(iOS 13.0, tvOS 13.0, *)) { + if ([notification.object isKindOfClass:[UIScene class]]) { + UIScene *scene = (UIScene *)notification.object; + [GULSceneDelegateSwizzler proxySceneDelegateIfNeeded:scene]; + } + } +} + +#pragma mark - [Donor Methods] UISceneDelegate URL handler + +- (void)scene:(UIScene *)scene + openURLContexts:(NSSet *)URLContexts API_AVAILABLE(ios(13.0), tvos(13.0)) { + if (@available(iOS 13.0, tvOS 13.0, *)) { + SEL methodSelector = @selector(scene:openURLContexts:); + // Call the real implementation if the real Scene Delegate has any. + NSValue *openURLContextsIMPPointer = + [GULSceneDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULOpenURLContextsIMP openURLContextsIMP = [openURLContextsIMPPointer pointerValue]; + + [GULSceneDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + if ([interceptor + conformsToProtocol:@protocol(UISceneDelegate)]) { + id sceneInterceptor = + (id)interceptor; + [sceneInterceptor scene:scene openURLContexts:URLContexts]; + } + }]; + + if (openURLContextsIMP) { + openURLContextsIMP(self, methodSelector, scene, URLContexts); + } + } +} + ++ (void)proxySceneDelegateIfNeeded:(UIScene *)scene { + Class realClass = [scene.delegate class]; + NSString *className = NSStringFromClass(realClass); + + // Skip proxying if failed to get the delegate class name for some reason (e.g. `delegate == nil`) + // or the class has a prefix of kGULAppDelegatePrefix, which means it has been proxied before. + if (className == nil || [className hasPrefix:kGULSceneDelegatePrefix]) { + return; + } + + NSString *classNameWithPrefix = [kGULSceneDelegatePrefix stringByAppendingString:className]; + NSString *newClassName = + [NSString stringWithFormat:@"%@-%@", classNameWithPrefix, [NSUUID UUID].UUIDString]; + + if (NSClassFromString(newClassName)) { + GULLogError( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Cannot create a proxy for Scene Delegate. Subclass already exists. Original Class" + @": %@, subclass: %@", + className, newClassName); + return; + } + + // Register the new class as subclass of the real one. Do not allocate more than the real class + // size. + Class sceneDelegateSubClass = objc_allocateClassPair(realClass, newClassName.UTF8String, 0); + if (sceneDelegateSubClass == Nil) { + GULLogError( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Cannot create a proxy for Scene Delegate. Subclass already exists. Original Class" + @": %@, subclass: Nil", + className); + return; + } + + NSMutableDictionary *realImplementationsBySelector = + [[NSMutableDictionary alloc] init]; + + // For scene:openURLContexts: + SEL openURLContextsSEL = @selector(scene:openURLContexts:); + [self proxyDestinationSelector:openURLContextsSEL + implementationsFromSourceSelector:openURLContextsSEL + fromClass:[GULSceneDelegateSwizzler class] + toClass:sceneDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + + // Store original implementations to a fake property of the original delegate. + objc_setAssociatedObject(scene.delegate, &kGULRealIMPBySelectorKey, + [realImplementationsBySelector copy], OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject(scene.delegate, &kGULRealClassKey, realClass, + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + // The subclass size has to be exactly the same size with the original class size. The subclass + // cannot have more ivars/properties than its superclass since it will cause an offset in memory + // that can lead to overwriting the isa of an object in the next frame. + if (class_getInstanceSize(realClass) != class_getInstanceSize(sceneDelegateSubClass)) { + GULLogError( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Cannot create subclass of Scene Delegate, because the created subclass is not the " + @"same size. %@", + className); + NSAssert(NO, @"Classes must be the same size to swizzle isa"); + return; + } + + // Make the newly created class to be the subclass of the real Scene Delegate class. + objc_registerClassPair(sceneDelegateSubClass); + if (object_setClass(scene.delegate, sceneDelegateSubClass)) { + GULLogDebug( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Successfully created Scene Delegate Proxy automatically. To disable the " + @"proxy, set the flag %@ to NO (Boolean) in the Info.plist", + [GULSceneDelegateSwizzler correctSceneDelegateProxyKey]); + } +} + ++ (NSString *)correctSceneDelegateProxyKey { + return NSClassFromString(@"FIRCore") ? kGULFirebaseSceneDelegateProxyEnabledPlistKey + : kGULGoogleUtilitiesSceneDelegateProxyEnabledPlistKey; +} + +#endif // UISCENE_SUPPORTED + +@end diff --git a/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h b/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h new file mode 100644 index 0000000..a2439eb --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h @@ -0,0 +1,48 @@ +/* + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GULSceneDelegateSwizzler () + +#if UISCENE_SUPPORTED + +/** Returns a dictionary containing interceptor IDs mapped to a GULZeroingWeakContainer. + * + * @return A dictionary of the form {NSString : GULZeroingWeakContainer}, where the NSString is + * the interceptorID. + */ ++ (GULMutableDictionary *)interceptors; + +/** Deletes all the registered interceptors. */ ++ (void)clearInterceptors; + +/** ISA Swizzles the given appDelegate as the original app delegate would be. + * + * @param scene The scene whose delegate needs to be isa swizzled. This should conform to the + * scene delegate protocol. + */ ++ (void)proxySceneDelegateIfNeeded:(UIScene *)scene API_AVAILABLE(ios(13.0), tvos(13.0)); + +#endif // UISCENE_SUPPORTED + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h b/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h new file mode 100644 index 0000000..420b3e7 --- /dev/null +++ b/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !TARGET_OS_OSX +#import +#endif // !TARGET_OS_OSX + +#if ((TARGET_OS_IOS || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 130000)) +#define UISCENE_SUPPORTED 1 +#endif + +NS_ASSUME_NONNULL_BEGIN + +typedef NSString *const GULSceneDelegateInterceptorID; + +/** This class contains methods that isa swizzle the scene delegate. */ +@interface GULSceneDelegateSwizzler : NSProxy + +#if UISCENE_SUPPORTED + +/** Registers a scene delegate interceptor whose methods will be invoked as they're invoked on the + * original scene delegate. + * + * @param interceptor An instance of a class that conforms to the application delegate protocol. + * The interceptor is NOT retained. + * @return A unique GULSceneDelegateInterceptorID if interceptor was successfully registered; nil + * if it fails. + */ ++ (nullable GULSceneDelegateInterceptorID)registerSceneDelegateInterceptor: + (id)interceptor API_AVAILABLE(ios(13.0), tvos(13.0)); + +/** Unregisters an interceptor with the given ID if it exists. + * + * @param interceptorID The object that was generated when the interceptor was registered. + */ ++ (void)unregisterSceneDelegateInterceptorWithID:(GULSceneDelegateInterceptorID)interceptorID + API_AVAILABLE(ios(13.0), tvos(13.0)); + +/** Do not initialize this class. */ +- (instancetype)init NS_UNAVAILABLE; + +#endif // UISCENE_SUPPORTED + +/** This method ensures that the original scene delegate has been proxied. Call this before + * registering your interceptor. This method is safe to call multiple times (but it only proxies + * the scene delegate once). + * + * The method has no effect for extensions. + */ ++ (void)proxyOriginalSceneDelegate; + +/** Indicates whether scene delegate proxy is explicitly disabled or enabled. Enabled by default. + * + * @return YES if SceneDelegateProxy is Enabled, NO otherwise. + */ ++ (BOOL)isSceneDelegateProxyEnabled; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GoogleUtilities/README.md b/Pods/GoogleUtilities/README.md index 5097a89..b04a270 100644 --- a/Pods/GoogleUtilities/README.md +++ b/Pods/GoogleUtilities/README.md @@ -1,10 +1,19 @@ -# Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) - -This repository contains a subset of the Firebase iOS SDK source. It currently -includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, -FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and -FirebaseStorage. +# Firebase iOS Open Source Development + [![Actions Status][gh-auth-badge]][gh-actions] + [![Actions Status][gh-core-badge]][gh-actions] + [![Actions Status][gh-datatransport-badge]][gh-actions] + [![Actions Status][gh-dynamiclinks-badge]][gh-actions] + [![Actions Status][gh-firebasepod-badge]][gh-actions] + [![Actions Status][gh-firestore-badge]][gh-actions] + [![Actions Status][gh-interop-badge]][gh-actions] + [![Actions Status][gh-messaging-badge]][gh-actions] + [![Actions Status][gh-storage-badge]][gh-actions] + [![Actions Status][gh-symbolcollision-badge]][gh-actions] + [![Actions Status][gh-zip-badge]][gh-actions] + [![Travis](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +This repository contains all Firebase iOS SDK source except FirebaseAnalytics, +FirebasePerformance, and FirebaseML. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -69,6 +78,10 @@ Instructions for the experimental Carthage distribution are at Instructions for installing binary frameworks via [Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). +### Using Firebase from a Framework or a library + +[Using Firebase from a Framework or a library](docs/firebase_in_libraries.md) + ## Development To develop Firebase software in this repository, ensure that you have at least @@ -116,8 +129,8 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb -brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c6f1cbd/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/c13eda8/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to @@ -131,7 +144,7 @@ match the versions in the CI failure logs Select a scheme and press Command-u to build a component and run its unit tests. -#### Viewing Code Coverage +#### Viewing Code Coverage (Deprecated) First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. @@ -162,7 +175,7 @@ See the sections below for any special instructions for those components. ### Firebase Auth If you're doing specific Firebase Auth development, see -[the Auth Sample README](Example/Auth/README.md) for instructions about +[the Auth Sample README](FirebaseAuth/Tests/Sample/README.md) for instructions about building and running the FirebaseAuth pod along with various samples and tests. ### Firebase Database @@ -173,7 +186,7 @@ To run the Database Integration tests, make your database authentication rules ### Firebase Storage To run the Storage Integration tests, follow the instructions in -[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). +[FIRStorageIntegrationTests.m](FirebaseStorage/Tests/Integration/FIRStorageIntegrationTests.m). #### Push Notifications @@ -199,32 +212,34 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### tvOS, macOS, and Catalyst +### tvOS, macOS, watchOS and Catalyst Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on -tvOS, macOS, and Catalyst. +tvOS, macOS, watchOS and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). +For watchOS, currently only Messaging and Storage (and their dependencies) have limited support. Checkout the +[Independent Watch App Sample](Example/watchOSSample). -Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +Keep in mind that macOS, tvOS, watchOS and Catalyst are not officially supported by Firebase, and this repository is actively developed primarily for iOS. While we can catch basic unit test issues with -Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +Travis, there may be some changes where the SDK no longer works as expected on macOS, tvOS or watchOS. If you encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). During app setup in the console, you may get to a step that mentions something like "Checking if the app -has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/watchOS/Catalyst. **It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'Firebase/ABTesting' -pod 'Firebase/Auth' -pod 'Firebase/Crashlytics' -pod 'Firebase/Database' -pod 'Firebase/Firestore' -pod 'Firebase/Functions' +pod 'Firebase/ABTesting' # No watchOS support yet +pod 'Firebase/Auth' # No watchOS support yet +pod 'Firebase/Crashlytics' # No watchOS support yet +pod 'Firebase/Database' # No watchOS support yet +pod 'Firebase/Firestore' # No watchOS support yet +pod 'Firebase/Functions' # No watchOS support yet pod 'Firebase/Messaging' -pod 'Firebase/RemoteConfig' +pod 'Firebase/RemoteConfig' # No watchOS support yet pod 'Firebase/Storage' ``` @@ -252,3 +267,16 @@ The contents of this repository is licensed under the Your use of Firebase is governed by the [Terms of Service for Firebase Services](https://firebase.google.com/terms/). + +[gh-actions]: https://github.com/firebase/firebase-ios-sdk/actions +[gh-auth-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/auth/badge.svg +[gh-core-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/core/badge.svg +[gh-datatransport-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/datatransport/badge.svg +[gh-dynamiclinks-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/dynamiclinks/badge.svg +[gh-firebasepod-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firebasepod/badge.svg +[gh-firestore-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/firestore/badge.svg +[gh-interop-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/interop/badge.svg +[gh-messaging-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/messaging/badge.svg +[gh-storage-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/storage/badge.svg +[gh-symbolcollision-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/symbolcollision/badge.svg +[gh-zip-badge]: https://github.com/firebase/firebase-ios-sdk/workflows/zip/badge.svg diff --git a/Pods/Headers/Private/Firebase/Firebase.h b/Pods/Headers/Private/Firebase/Firebase.h deleted file mode 120000 index 07ac6eb..0000000 --- a/Pods/Headers/Private/Firebase/Firebase.h +++ /dev/null @@ -1 +0,0 @@ -../../../Firebase/CoreOnly/Sources/Firebase.h \ No newline at end of file diff --git a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRAnalyticsInterop.h b/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRAnalyticsInterop.h deleted file mode 120000 index e01a43a..0000000 --- a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRAnalyticsInterop.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInterop.h \ No newline at end of file diff --git a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRAnalyticsInteropListener.h b/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRAnalyticsInteropListener.h deleted file mode 120000 index d3cd097..0000000 --- a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRAnalyticsInteropListener.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInteropListener.h \ No newline at end of file diff --git a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRInteropEventNames.h b/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRInteropEventNames.h deleted file mode 120000 index dbda3ec..0000000 --- a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRInteropEventNames.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropEventNames.h \ No newline at end of file diff --git a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRInteropParameterNames.h b/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRInteropParameterNames.h deleted file mode 120000 index 5145843..0000000 --- a/Pods/Headers/Private/FirebaseAnalyticsInterop/FIRInteropParameterNames.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropParameterNames.h \ No newline at end of file diff --git a/Pods/Headers/Private/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsData.h b/Pods/Headers/Private/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsData.h deleted file mode 120000 index ce646ec..0000000 --- a/Pods/Headers/Private/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsData.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h \ No newline at end of file diff --git a/Pods/Headers/Private/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsInterop.h b/Pods/Headers/Private/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsInterop.h deleted file mode 120000 index 07d83d7..0000000 --- a/Pods/Headers/Private/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsInterop.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h \ No newline at end of file diff --git a/Pods/Headers/Public/Firebase/Firebase.h b/Pods/Headers/Public/Firebase/Firebase.h deleted file mode 120000 index 07ac6eb..0000000 --- a/Pods/Headers/Public/Firebase/Firebase.h +++ /dev/null @@ -1 +0,0 @@ -../../../Firebase/CoreOnly/Sources/Firebase.h \ No newline at end of file diff --git a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRAnalyticsInterop.h b/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRAnalyticsInterop.h deleted file mode 120000 index e01a43a..0000000 --- a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRAnalyticsInterop.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInterop.h \ No newline at end of file diff --git a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRAnalyticsInteropListener.h b/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRAnalyticsInteropListener.h deleted file mode 120000 index d3cd097..0000000 --- a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRAnalyticsInteropListener.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRAnalyticsInteropListener.h \ No newline at end of file diff --git a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRInteropEventNames.h b/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRInteropEventNames.h deleted file mode 120000 index dbda3ec..0000000 --- a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRInteropEventNames.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropEventNames.h \ No newline at end of file diff --git a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRInteropParameterNames.h b/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRInteropParameterNames.h deleted file mode 120000 index 5145843..0000000 --- a/Pods/Headers/Public/FirebaseAnalyticsInterop/FIRInteropParameterNames.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseAnalyticsInterop/Interop/Analytics/Public/FIRInteropParameterNames.h \ No newline at end of file diff --git a/Pods/Headers/Public/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsData.h b/Pods/Headers/Public/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsData.h deleted file mode 120000 index ce646ec..0000000 --- a/Pods/Headers/Public/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsData.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h \ No newline at end of file diff --git a/Pods/Headers/Public/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsInterop.h b/Pods/Headers/Public/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsInterop.h deleted file mode 120000 index 07d83d7..0000000 --- a/Pods/Headers/Public/FirebaseCoreDiagnosticsInterop/FIRCoreDiagnosticsInterop.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index e84a016..c80dfbf 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,73 +1,90 @@ PODS: - Alamofire (4.7.3) - Cosmos (20.0.1) - - Firebase/CoreOnly (6.18.0): - - FirebaseCore (= 6.6.3) - - Firebase/Crashlytics (6.18.0): + - Firebase/Core (6.27.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 4.0.0-beta.4) - - Firebase/MLVision (6.18.0): + - FirebaseAnalytics (= 6.6.1) + - Firebase/CoreOnly (6.27.0): + - FirebaseCore (= 6.8.0) + - Firebase/Crashlytics (6.27.0): - Firebase/CoreOnly - - FirebaseMLVision (~> 0.19.0) - - Firebase/MLVisionTextModel (6.18.0): + - FirebaseCrashlytics (~> 4.2.0) + - Firebase/MLVision (6.27.0): - Firebase/CoreOnly - - FirebaseMLVisionTextModel (~> 0.19.0) - - FirebaseAnalyticsInterop (1.5.0) - - FirebaseCore (6.6.3): - - FirebaseCoreDiagnostics (~> 1.2) - - FirebaseCoreDiagnosticsInterop (~> 1.2) + - FirebaseMLVision (~> 0.20.1) + - Firebase/MLVisionTextModel (6.27.0): + - Firebase/CoreOnly + - FirebaseMLVisionTextModel (~> 0.20.0) + - FirebaseAnalytics (6.6.1): + - FirebaseCore (~> 6.8) + - FirebaseInstallations (~> 1.4) + - GoogleAppMeasurement (= 6.6.1) + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (~> 1.30905.0) + - FirebaseCore (6.8.0): + - FirebaseCoreDiagnostics (~> 1.3) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/Logger (~> 6.5) - - FirebaseCoreDiagnostics (1.2.1): - - FirebaseCoreDiagnosticsInterop (~> 1.2) - - GoogleDataTransportCCTSupport (~> 1.3) + - FirebaseCoreDiagnostics (1.4.0): + - GoogleDataTransportCCTSupport (~> 3.1) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/Logger (~> 6.5) - - nanopb (~> 0.3.901) - - FirebaseCoreDiagnosticsInterop (1.2.0) - - FirebaseCrashlytics (4.0.0-beta.4): - - FirebaseAnalyticsInterop (~> 1.2) - - FirebaseCore (~> 6.6) - - FirebaseInstanceID (~> 4.3) + - nanopb (~> 1.30905.0) + - FirebaseCrashlytics (4.2.0): + - FirebaseCore (~> 6.8) + - FirebaseInstallations (~> 1.1) + - GoogleDataTransport (~> 6.1) + - GoogleDataTransportCCTSupport (~> 3.1) + - nanopb (~> 1.30905.0) - PromisesObjC (~> 1.2) - - FirebaseInstallations (1.1.0): - - FirebaseCore (~> 6.6) - - GoogleUtilities/UserDefaults (~> 6.5) + - FirebaseInstallations (1.4.0): + - FirebaseCore (~> 6.8) + - GoogleUtilities/Environment (~> 6.6) + - GoogleUtilities/UserDefaults (~> 6.6) - PromisesObjC (~> 1.2) - - FirebaseInstanceID (4.3.2): - - FirebaseCore (~> 6.6) + - FirebaseInstanceID (4.4.0): + - FirebaseCore (~> 6.8) - FirebaseInstallations (~> 1.0) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/UserDefaults (~> 6.5) - - FirebaseMLCommon (0.19.0): - - FirebaseCore (~> 6.3) - - FirebaseInstanceID (~> 4.2) + - FirebaseMLCommon (0.20.1): + - FirebaseCore (~> 6.7) + - FirebaseInstanceID (~> 4.3) - GoogleToolboxForMac/Logger (~> 2.1) - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" - GoogleUtilities/UserDefaults (~> 6.0) - GTMSessionFetcher/Core (~> 1.1) - - Protobuf (~> 3.5) - - FirebaseMLVision (0.19.0): - - FirebaseCore (~> 6.3) - - FirebaseMLCommon (~> 0.19) + - Protobuf (~> 3.12) + - FirebaseMLVision (0.20.1): + - FirebaseCore (~> 6.7) + - FirebaseMLCommon (~> 0.20) - GoogleAPIClientForREST/Core (~> 1.3) - GoogleAPIClientForREST/Vision (~> 1.3) - GoogleToolboxForMac/Logger (~> 2.1) - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" - GTMSessionFetcher/Core (~> 1.1) - - Protobuf (~> 3.5) - - FirebaseMLVisionTextModel (0.19.0): - - FirebaseMLVision (~> 0.19) - - GoogleAPIClientForREST/Core (1.3.11): + - Protobuf (~> 3.12) + - FirebaseMLVisionTextModel (0.20.0): + - FirebaseMLVision (~> 0.20) + - GoogleAPIClientForREST/Core (1.4.2): - GTMSessionFetcher (>= 1.1.7) - - GoogleAPIClientForREST/Vision (1.3.11): + - GoogleAPIClientForREST/Vision (1.4.2): - GoogleAPIClientForREST/Core - GTMSessionFetcher (>= 1.1.7) - - GoogleDataTransport (4.0.1) - - GoogleDataTransportCCTSupport (1.4.1): - - GoogleDataTransport (~> 4.0) - - nanopb (~> 0.3.901) + - GoogleAppMeasurement (6.6.1): + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (~> 1.30905.0) + - GoogleDataTransport (6.2.1) + - GoogleDataTransportCCTSupport (3.2.0): + - GoogleDataTransport (~> 6.1) + - nanopb (~> 1.30905.0) - GoogleToolboxForMac/DebugUtils (2.2.2): - GoogleToolboxForMac/Defines (= 2.2.2) - GoogleToolboxForMac/Defines (2.2.2) @@ -80,29 +97,43 @@ PODS: - GoogleToolboxForMac/Defines (= 2.2.2) - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.2)" - "GoogleToolboxForMac/NSString+URLArguments (2.2.2)" - - GoogleUtilities/Environment (6.5.1) - - GoogleUtilities/Logger (6.5.1): + - GoogleUtilities/AppDelegateSwizzler (6.6.0): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (6.6.0): + - PromisesObjC (~> 1.2) + - GoogleUtilities/Logger (6.6.0): - GoogleUtilities/Environment - - GoogleUtilities/UserDefaults (6.5.1): + - GoogleUtilities/MethodSwizzler (6.6.0): + - GoogleUtilities/Logger + - GoogleUtilities/Network (6.6.0): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (6.6.0)" + - GoogleUtilities/Reachability (6.6.0): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (6.6.0): - GoogleUtilities/Logger - - GTMSessionFetcher (1.3.1): - - GTMSessionFetcher/Full (= 1.3.1) - - GTMSessionFetcher/Core (1.3.1) - - GTMSessionFetcher/Full (1.3.1): - - GTMSessionFetcher/Core (= 1.3.1) + - GTMSessionFetcher (1.4.0): + - GTMSessionFetcher/Full (= 1.4.0) + - GTMSessionFetcher/Core (1.4.0) + - GTMSessionFetcher/Full (1.4.0): + - GTMSessionFetcher/Core (= 1.4.0) - IQKeyboardManagerSwift (6.2.0) - MarqueeLabel/Swift (3.2.0) - - nanopb (0.3.9011): - - nanopb/decode (= 0.3.9011) - - nanopb/encode (= 0.3.9011) - - nanopb/decode (0.3.9011) - - nanopb/encode (0.3.9011) + - nanopb (1.30905.0): + - nanopb/decode (= 1.30905.0) + - nanopb/encode (= 1.30905.0) + - nanopb/decode (1.30905.0) + - nanopb/encode (1.30905.0) - NotificationBannerSwift (1.7.3): - MarqueeLabel/Swift (~> 3.2.0) - SnapKit (~> 4.0.1) - Popover (1.2.2) - - PromisesObjC (1.2.8) - - Protobuf (3.11.4) + - PromisesObjC (1.2.9) + - Protobuf (3.12.0) - SDWebImage (4.4.2): - SDWebImage/Core (= 4.4.2) - SDWebImage/Core (4.4.2) @@ -113,6 +144,7 @@ PODS: DEPENDENCIES: - Alamofire - Cosmos (~> 20.0) + - Firebase/Core - Firebase/Crashlytics - Firebase/MLVision - Firebase/MLVisionTextModel @@ -128,10 +160,9 @@ SPEC REPOS: - Alamofire - Cosmos - Firebase - - FirebaseAnalyticsInterop + - FirebaseAnalytics - FirebaseCore - FirebaseCoreDiagnostics - - FirebaseCoreDiagnosticsInterop - FirebaseCrashlytics - FirebaseInstallations - FirebaseInstanceID @@ -139,6 +170,7 @@ SPEC REPOS: - FirebaseMLVision - FirebaseMLVisionTextModel - GoogleAPIClientForREST + - GoogleAppMeasurement - GoogleDataTransport - GoogleDataTransportCCTSupport - GoogleToolboxForMac @@ -159,35 +191,35 @@ SPEC REPOS: SPEC CHECKSUMS: Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568 Cosmos: b47fddf2102bb48580cd3025d9ce0a5c658a65da - Firebase: 0490eca762a72e4f1582319539153897f1508dee - FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae - FirebaseCore: 78276943ad85e616dfa54dafa6c89512987d9d60 - FirebaseCoreDiagnostics: 2109d10c35e8289b1ee6cabf44d9ffb055620194 - FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 - FirebaseCrashlytics: 1dff71c846a3a138f524f79d4740ffed5fdd0c04 - FirebaseInstallations: 575cd32f2aec0feeb0e44f5d0110a09e5e60b47b - FirebaseInstanceID: 7ee0d6777013bb952f377b41965bf132b6a075be - FirebaseMLCommon: 074a67e05122b1c9f6401a4e33b2cea3b4efd224 - FirebaseMLVision: 7a456009787690e3b53436092ae9b635563de8f3 - FirebaseMLVisionTextModel: c264caa3100ca804580bf2a7c1cb9ff390d1f471 - GoogleAPIClientForREST: 0f19a8280dfe6471f76016645d26eb5dae305101 - GoogleDataTransport: 653963cf5be60fb59cf051e070f0836fdc305f81 - GoogleDataTransportCCTSupport: 84e4d4bbab642f2e9d83ee65d78aca2b5527d314 + Firebase: fc4cbf6f1592636431821ef9a3c557e4dfd9f268 + FirebaseAnalytics: 0ea640473474f036cabbc2576e20c2d63671c92f + FirebaseCore: feda061cb1ee6d8ad4824f4a4a8ffbcfe284f595 + FirebaseCoreDiagnostics: 4505e4d4009b1d93f605088ee7d7764d5f0d1c84 + FirebaseCrashlytics: 7d0fa02ea8842cc4b2ab07b0735edafde1ad77d6 + FirebaseInstallations: 293f567159b6d66d1c990f13bb868066096c94ec + FirebaseInstanceID: 3b119bfe90e904851218159c9a4ecb847cc51d18 + FirebaseMLCommon: 5e1184cfdddbd097f55cad75b598881d348d900f + FirebaseMLVision: 485358b97d3332669ecc4fed55ee360aaef2813d + FirebaseMLVisionTextModel: 2ec9bf2287b29ef2b7d79152aad454cce5bc3040 + GoogleAPIClientForREST: 9f49df9fac7867b459187e687fed3066b2be049a + GoogleAppMeasurement: 2fd5c5a56c069db635c8e7b92d4809a9591d0a69 + GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020 + GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d GoogleToolboxForMac: 800648f8b3127618c1b59c7f97684427630c5ea3 - GoogleUtilities: 06eb53bb579efe7099152735900dd04bf09e7275 - GTMSessionFetcher: cea130bbfe5a7edc8d06d3f0d17288c32ffe9925 + GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1 + GTMSessionFetcher: 6f5c8abbab8a9bce4bb3f057e317728ec6182b10 IQKeyboardManagerSwift: b07ccf9d8cafe993dcd6cb794eb4ba34611a0c4e MarqueeLabel: 440a502b91a9179bd98f9fff00ba1150650a1c0e - nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd + nanopb: c43f40fadfe79e8b8db116583945847910cbabc9 NotificationBannerSwift: c9f4bc868d78df975ed59c0b2fccdbbe0e863efe Popover: 21e357f86d45c8d9e29a41a4adbca3664d6e511f - PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6 - Protobuf: 176220c526ad8bd09ab1fb40a978eac3fef665f7 + PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75 + Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9 SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681 SnapKit: 0de968a9fec17499afa29683b05d0c775b6d1c29 SwiftyJSON: c4bcba26dd9ec7a027fc8eade48e2c911f229e96 UILoadControl: e742ddbe4c67ba1f13b00b7d462d4141307d021f -PODFILE CHECKSUM: 8c713f5133988e4ef9222c95efa9cf1d9b3f112c +PODFILE CHECKSUM: 89c1cd1b108b9932cfe1cd5e08880e958ddcff2c COCOAPODS: 1.8.4 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 59fd80a..6f20bd5 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -9,2375 +9,2652 @@ /* Begin PBXAggregateTarget section */ 0197D7CB5341EE949E9B8A3B937F2DB3 /* FirebaseMLVision */ = { isa = PBXAggregateTarget; - buildConfigurationList = 9BEE346B25D24680D681EC825FF79E3B /* Build configuration list for PBXAggregateTarget "FirebaseMLVision" */; + buildConfigurationList = 161673B79AA04CBB1E22901873676B31 /* Build configuration list for PBXAggregateTarget "FirebaseMLVision" */; buildPhases = ( ); dependencies = ( - 5D7C952CB9228D87BFC7BF750E8C3321 /* PBXTargetDependency */, - 9AEF70695A4D8D12B81775F92C705E6C /* PBXTargetDependency */, - 8234191272500759CEE4C8885D555FA9 /* PBXTargetDependency */, - 47F7ADB8986F5E9BE4DB60F526E1C5BF /* PBXTargetDependency */, - 69FE4DD99AF7F104FF63E2D71180C6C6 /* PBXTargetDependency */, - 549638661BFFA18BC7E01B41898D894E /* PBXTargetDependency */, + 607F945AB4FA2F9CD6074FFD9586E044 /* PBXTargetDependency */, + AA8CB1BF032ECB07FCDD5F351938682D /* PBXTargetDependency */, + 518EA7D89822E9565E3E874EAD7F891F /* PBXTargetDependency */, + 2147D6F4F55D69AE27905A6ABB5E4EF2 /* PBXTargetDependency */, + 484C536927B093575B329668FB775790 /* PBXTargetDependency */, + F674A22920918BEED572A19D23D1FC50 /* PBXTargetDependency */, ); name = FirebaseMLVision; }; 072CEA044D2EF26F03496D5996BBF59F /* Firebase */ = { isa = PBXAggregateTarget; - buildConfigurationList = 51F8B615680F01F193ED43CC441DD736 /* Build configuration list for PBXAggregateTarget "Firebase" */; + buildConfigurationList = F8ACEB5E4B59C8FAC9DA766576D60055 /* Build configuration list for PBXAggregateTarget "Firebase" */; buildPhases = ( ); dependencies = ( - 887328F615A9DDEC6FD4569B40ED0E8C /* PBXTargetDependency */, - F51B061AA943358B69810C99CFAD03AF /* PBXTargetDependency */, - 1CDA73B1ACF480C828FD440FCEE6C928 /* PBXTargetDependency */, - 76C964EB0975B10BC4DD4AD50F7890FA /* PBXTargetDependency */, + 235FCD9EDB12E91837EBA14158033E90 /* PBXTargetDependency */, + A2C7476F01A9FF9334165C57F3B820B8 /* PBXTargetDependency */, + B0B326B11E4F697F7C483DBE48EE3243 /* PBXTargetDependency */, + 5D49A7B35CB7802281379B65D701BAD3 /* PBXTargetDependency */, + 737541A6520B1A4EF92C39574F02D00B /* PBXTargetDependency */, ); name = Firebase; }; 3B7356AB7ABB18E92E7628E5656F9625 /* FirebaseMLCommon */ = { isa = PBXAggregateTarget; - buildConfigurationList = 23A8CB771320ED6B633D4DA95ECC9900 /* Build configuration list for PBXAggregateTarget "FirebaseMLCommon" */; + buildConfigurationList = 0057AF3800912CA351917CB422E82170 /* Build configuration list for PBXAggregateTarget "FirebaseMLCommon" */; buildPhases = ( ); dependencies = ( - F5C98794F04FD223699EC628989BC58F /* PBXTargetDependency */, - 2E1477828D5C1995B78C895219B6C321 /* PBXTargetDependency */, - 6142F463FB1254A11E3F7E7E3B995510 /* PBXTargetDependency */, - EF4812FAD4316606100B64B48952B03E /* PBXTargetDependency */, - 577770AD0ED1EE2D4DDC87CD65A85408 /* PBXTargetDependency */, - D260A19E85E04F2B1391EB57B213888B /* PBXTargetDependency */, + EB3172D5F474D2EB7DA0F10DCF2F909A /* PBXTargetDependency */, + 2B8E752874917A442909038117337EAA /* PBXTargetDependency */, + 042CC70897384EDFFE27232377CD9B8E /* PBXTargetDependency */, + D6DBAEF52DD50F019E912ED328677694 /* PBXTargetDependency */, + B9BC7D62523939C5E04D5684A589916F /* PBXTargetDependency */, + FCB365336021B979F8C70DA247668941 /* PBXTargetDependency */, ); name = FirebaseMLCommon; }; - 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */ = { + 7ABC58EF037E8B5BE0CD776D0D629DE6 /* FirebaseMLVisionTextModel */ = { isa = PBXAggregateTarget; - buildConfigurationList = 5DBD2CBF68BEB0C90D1BA272E38F144D /* Build configuration list for PBXAggregateTarget "FirebaseCoreDiagnosticsInterop" */; + buildConfigurationList = 1B4339A7E4E757AE4F4BB015FE149584 /* Build configuration list for PBXAggregateTarget "FirebaseMLVisionTextModel" */; buildPhases = ( ); dependencies = ( + E46547A8322CD60C444A1BAF2D99A995 /* PBXTargetDependency */, + 25EA346FA56B14749E0BE3539BA8C565 /* PBXTargetDependency */, ); - name = FirebaseCoreDiagnosticsInterop; + name = FirebaseMLVisionTextModel; }; - 7ABC58EF037E8B5BE0CD776D0D629DE6 /* FirebaseMLVisionTextModel */ = { + B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */ = { isa = PBXAggregateTarget; - buildConfigurationList = 5B6EC06B0CCFA258F4AA098B125305CC /* Build configuration list for PBXAggregateTarget "FirebaseMLVisionTextModel" */; + buildConfigurationList = E73D73B1A2975C343375C8E5D164941D /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */; buildPhases = ( ); dependencies = ( - E83DD506EE8AB8EFD6CDFA16F19F0033 /* PBXTargetDependency */, - 25C1DB02F1147FF090205433115A87FB /* PBXTargetDependency */, + 8CD323D40F1498E559138C546C47E8D8 /* PBXTargetDependency */, + 6F6CEE5103C08AE4EB071B810347FF33 /* PBXTargetDependency */, ); - name = FirebaseMLVisionTextModel; + name = GoogleAppMeasurement; }; - D372E53E2E8FEAA06A0439FB85E65767 /* FirebaseAnalyticsInterop */ = { + C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */ = { isa = PBXAggregateTarget; - buildConfigurationList = EDE57FFF339FE19147AEF8ED2EE7F606 /* Build configuration list for PBXAggregateTarget "FirebaseAnalyticsInterop" */; + buildConfigurationList = D1E2A6845795091CE930F68D80DF9076 /* Build configuration list for PBXAggregateTarget "FirebaseAnalytics" */; buildPhases = ( ); dependencies = ( + 1CD4060229CAA0B9C96BADE608102557 /* PBXTargetDependency */, + F0A23D56CABF93D220C666D89554076A /* PBXTargetDependency */, + C0DE6BB4AE2610A2C0ECC24B2BDEEDFE /* PBXTargetDependency */, + A69CC363B323C10C459BCD6BC5C1C14F /* PBXTargetDependency */, + 01D640685E3D2AFA4C0C943D8E358E57 /* PBXTargetDependency */, ); - name = FirebaseAnalyticsInterop; + name = FirebaseAnalytics; }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 002D4C8CFDCBCCA8B269809BDE97FFF6 /* FirebaseCrashlytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C0408A380188AFFE476A976684A18E9 /* FirebaseCrashlytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 00935474E6E657660FB2CA10150BBAD9 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E44ADBEC8809E89D6F963CFC9A1191 /* ConstraintItem.swift */; }; - 009F46232FB5D65F0B60C14815856CB6 /* GDTCORDataFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 82ED0D7D28C0AAD3FB4CCF03BBB98BA0 /* GDTCORDataFuture.m */; }; - 010361742336CE941AA1E46E08DBD044 /* NotificationBannerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436F208E80310B173AE4CCD8593AF1BA /* NotificationBannerUtilities.swift */; }; - 015B90278446AD5F509B36EF956455EB /* GDTCORLifecycle.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B91EAE51685CB45E88B699BF67DE9B /* GDTCORLifecycle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 016310D8559884F56F6CF6F6043A4B92 /* Duration.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BC559CD85652373AD4742845AD187E6 /* Duration.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 02A40C4326531FECA7B7F0212F8C7898 /* FIRInstallationsIIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 58E9EAA76C25EA3A08A27525FC5530EE /* FIRInstallationsIIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 02EEB2CAC216D2672239D684BD767D0A /* FIRInstallationsItem.h in Headers */ = {isa = PBXBuildFile; fileRef = E3D0FD0855800AB4A51D8CADE23CAD1C /* FIRInstallationsItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 03E955C8AAC26E31A8B29A2C1DC5B3BE /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B36E59DE0AFCF6A36C015A4E662F2B7 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 045283C43D78AFF336E9BB195C853305 /* FIRCLSThreadState.c in Sources */ = {isa = PBXBuildFile; fileRef = 475779BFB5687083CF00267E4DDE1767 /* FIRCLSThreadState.c */; }; - 04582B2778B6B4C16549DAE243C8C6C6 /* FIRCLSByteUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BA9FBD8266751176A47CC0F8BD8D25DC /* FIRCLSByteUtility.m */; }; - 0473B90D4464C1606B0ED3554B447389 /* pb_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CA6DEFF9F93E293473407917C7CA492 /* pb_encode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 049FC8D781A7ECAED15F25718502D54E /* CosmosAccessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB696988313D265F058AF3ECE177B1C /* CosmosAccessibility.swift */; }; - 04CDB6E6827EC300D7417BD71CA7CCA5 /* FIRCLSInstallIdentifierModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCC63C53E659B7CD758BC7736EC3AC8 /* FIRCLSInstallIdentifierModel.m */; }; - 04E91B1EC2F49966C4784B7023064D06 /* GTMSessionUploadFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = BAA39626F0C014A6D605CCD29D4C0FEC /* GTMSessionUploadFetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0545726F6FC9072ED17EBAD8CEDE9A4C /* tflite_lstm_recognizer_latin_0.3.class_lst in Resources */ = {isa = PBXBuildFile; fileRef = 831E43DE7649FDB604551056103BC769 /* tflite_lstm_recognizer_latin_0.3.class_lst */; }; - 05630D19F31D62985AD9AE58586FA0D3 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F69B235623ECD9E8FCAF5AA00C3E835 /* Debugging.swift */; }; - 05CCAECD1A85D16D2D79159A6568CE54 /* FBLPromise+Reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = 266FA7B9697725B97625EBEAEC260167 /* FBLPromise+Reduce.h */; }; - 05DFD786F217BD0DFBFB5F57D80236A5 /* CosmosTouch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D17775518BA33DA0603562EED5AD6B /* CosmosTouch.swift */; }; - 065D865C974FD3006AFB4BE06B7F7CE3 /* GDTCOREventTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D80E7B7470CD69EFB6DEBC534477EB5 /* GDTCOREventTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06A8684B4A3C3815CF6DFD9F944E2D0C /* FIRCLSMachOSlice.h in Headers */ = {isa = PBXBuildFile; fileRef = 490C465F2430F06F699BF12E18A223D0 /* FIRCLSMachOSlice.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06B8CB428852C2413F51E6F2601D5FB2 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535A5DB4914ECE054815924C587F62FF /* ConstraintLayoutGuide.swift */; }; - 06D8B1337694AF87E5818A228FEF70CE /* GPBExtensionInternals.m in Sources */ = {isa = PBXBuildFile; fileRef = 45648D83824956DF96B27378EB72C447 /* GPBExtensionInternals.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 070C876D5DC8FA0F8A516280423C47CF /* FIRInstanceIDCheckinService.h in Headers */ = {isa = PBXBuildFile; fileRef = F9E4F242BD62C6BD267D0FB347EB4F90 /* FIRInstanceIDCheckinService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 074AD6A89A6C7AEFD5051107E56F1067 /* FBLPromisePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 66D90F6D20FF66048AA11A313212119A /* FBLPromisePrivate.h */; }; - 07FD708A9CF542FA1FEDAAB50AC787E0 /* Popover-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BA85A51C9E91E3CA088199F4987B4C3 /* Popover-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0810BC5113992B0E28E7E0D91D8EB33C /* BannerPositionFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1687D33C0EBD122C338051DF47CBE529 /* BannerPositionFrame.swift */; }; - 082F001006A4B880FD6DF6A40295DC36 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 5427948B7BFDD3EB15A59316F79F2D91 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 083602AE5791D228DF71333D3F0EFE10 /* FBLPromise+Any.m in Sources */ = {isa = PBXBuildFile; fileRef = 201DFD6D4C1C8688B222BD2D08B09D9B /* FBLPromise+Any.m */; }; - 086BF6600BEDF76437948603EF96DD8D /* FIRInstallationsSingleOperationPromiseCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DD092C5B0FC7F9773D451C93BF0BD6 /* FIRInstallationsSingleOperationPromiseCache.m */; }; - 08C145CCC7984DA9988B54659EE82214 /* GPBUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C20D5CAF0BAB4C4542387CA2C9C09F37 /* GPBUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08E427A032ADAB64225CA01C76E7E3A9 /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193B805353E7AA02E9A0398BAC804137 /* IQUIScrollView+Additions.swift */; }; - 08E5E8005BDD650783D79F4956ACA7E5 /* GPBBootstrap.h in Headers */ = {isa = PBXBuildFile; fileRef = E29B37DDF6917885E71EC92D9471EA0C /* GPBBootstrap.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 096FA3197E3F1DBF9E7327851D09D1D5 /* FirebaseInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = FBCECCBC1BDF1CEBC8958F88D94A64AD /* FirebaseInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 097805B4304C4FDDDE628EB546EFAF17 /* FBLPromise+Retry.h in Headers */ = {isa = PBXBuildFile; fileRef = 854A2BE8A740BFF4CB53562D6EEB7F60 /* FBLPromise+Retry.h */; }; - 0992A1BDBD040ADA5968073AA9855225 /* FirebaseInstallations-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C8B9D6924A46C38E364B78A420F42507 /* FirebaseInstallations-dummy.m */; }; - 09A0A8BA1D62E82B6429B472394468F2 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78A08062647DE9ADED79950AD8534A5B /* ConstraintInsets.swift */; }; - 09D03F80892A9C1F559A675D105A51F8 /* SDWebImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = A98092A9113418AB18B8AF889D7EA252 /* SDWebImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A197AD9D2A183B67615F070326E37AE /* GULLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AAEC6DA8A30ABC67667308E1B82823A /* GULLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A40EFAF6C005371FB0D9BFDFF47362C /* FIRCLSDwarfUnwind.h in Headers */ = {isa = PBXBuildFile; fileRef = A3E67E16664E6B5E1F7F411C1BE8D1D7 /* FIRCLSDwarfUnwind.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A6F805D18A234D9175ECD139EE256E3 /* FIRCLSSettingsOnboardingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C59522825B27A36B289F27CEFC154BE /* FIRCLSSettingsOnboardingManager.m */; }; - 0ACC285E6095C841069B68827972B9B8 /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B6EBCB5E6E4BE058CD2717A63FC299FB /* NSImage+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B2269572E9ED1F6BE7E453F1CD33308 /* FIRInstanceIDTokenOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 286BE96E9D2BFCE6F1B209E475D51C2A /* FIRInstanceIDTokenOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B79C7AB763668A917AE7D4072F683C0 /* GTLRFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = 113E2D26B77DB74E66A34846DA654AB0 /* GTLRFramework.m */; }; - 0BAA31A2288CAFA7F34D6282964E228E /* GPBExtensionRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = D90E947C293E03E312B554FE51E99859 /* GPBExtensionRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0C5E11DE24DAA737704B355F5F2F3426 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CAC06114B7FA08EE9932F7B5046AFCF /* ParameterEncoding.swift */; }; - 0C7B3E861C680589147249919F807A74 /* FIRCLSReport.m in Sources */ = {isa = PBXBuildFile; fileRef = 46CD6DFB17C05EE4400922A86FF50288 /* FIRCLSReport.m */; }; - 0CA5E0992D6B7F456658AF35F4FF883B /* GTLRVision.h in Headers */ = {isa = PBXBuildFile; fileRef = 277CBC1725199B614D7F4B30BAE88511 /* GTLRVision.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0CD9B94BAA269FFC394D18DFB157189B /* FIRInstanceIDTokenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 87104AF581982761FF5A5F9D39F2871D /* FIRInstanceIDTokenInfo.m */; }; - 0D1B9CD436404AF8CE9454F4267E2220 /* FIRInstanceID+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 75AE0BB3237F88D5AA1C2CE91181136A /* FIRInstanceID+Private.m */; }; - 0D5A78884C78DFB2257AD92AEFC5AF25 /* FIRInstallationsStoredItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B23A000E5CFE2200770C1F58803E27 /* FIRInstallationsStoredItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E5DB0DFEF39DD6BD0740F924132785D /* FIRInstanceIDBackupExcludedPlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 79AB6C51428445076AB33773B96FE0E9 /* FIRInstanceIDBackupExcludedPlist.m */; }; - 0EBBC66437EC2B685657EE9877BFABA8 /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = FD73CD3CCC3045D3727682E43D99ACA1 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0EFA84E9085865DD0DA0976B1F586763 /* FIRInstanceIDVersionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DE20D841C531F358243B6B62FCE1B41 /* FIRInstanceIDVersionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F8FDBFA07DF60EA50C4EE08B584AD4C /* GPBCodedOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = DC96ED2FC9F24902F2F7C40DF69AD8CB /* GPBCodedOutputStream.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0FA70615E55EB98948B5805E4769FAC2 /* FIRCLSReportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CC257B3206836A2C2E9B96A2AD3D472B /* FIRCLSReportManager.m */; }; - 0FC427138A0D11CC18C78972E6D30E57 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89C7B2B743E4E4F4DF5D3863D29C5256 /* IQToolbar.swift */; }; - 0FFE6ACBCAF46278B64F25E69905741F /* FBLPromise+Reduce.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 266FA7B9697725B97625EBEAEC260167 /* FBLPromise+Reduce.h */; }; - 102602D5B541C3291E0CB3B3B5C53638 /* FIRCLSSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = E93E7764D0B63DD82D2F83AD79F7D75D /* FIRCLSSettings.m */; }; - 1029A5AE36220B771A6EC27A95D3FEC3 /* FBLPromise+Reduce.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F28B53A8B3410F953153B8BF1BFB40 /* FBLPromise+Reduce.m */; }; - 107F9A204934DFBB4189298EC835EF84 /* FBLPromise+Then.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F7041BF799BCD3BD2A58F339BC80AAE /* FBLPromise+Then.m */; }; - 1093E9C346CB92D68CE2AC21C2C864AC /* BaseNotificationBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55D42430D30B26A953FCFCCAB4B3EF4B /* BaseNotificationBanner.swift */; }; - 10A44B18B300E2B0BF5BF88F6F2E585F /* CosmosRating.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8BE88C2C0DFDEEBF5851E93710A847 /* CosmosRating.swift */; }; - 10F1AD015C91E4EAF98ADCC2E8A15DAE /* FBLPromise+Any.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 7C543B4564E64B8071CD3CD5A9C3C361 /* FBLPromise+Any.h */; }; - 11140CF278BF26D07619E22BA3F7080A /* GDTCORClock.m in Sources */ = {isa = PBXBuildFile; fileRef = 30EDB22C1AB6AC0AF295CC0430B7D9FA /* GDTCORClock.m */; }; - 11C7071DD0A286C6C5A36F3EA41FFEFE /* FIRAppAssociationRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF7AA1E0A01F0DCDDBA6EE564D3F54D /* FIRAppAssociationRegistration.m */; }; - 11D4DC832910E871B85A365B47F2CF09 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7D20154AB3EAD7670D3A4306B078A11 /* ConstraintView+Extensions.swift */; }; - 11E71DCBFDAEF73504543CA1EA818A86 /* FIRCLSApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = A67F2D5C0B267B8AE5B6AB53A97FD9F8 /* FIRCLSApplication.m */; }; - 11FEC23B7C62A57E44738AFC57532370 /* FIRCLSInternalReport.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C8692EC9659CE4C4984C64CC0394900 /* FIRCLSInternalReport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 120A2206B9C24FA1473B7853D62E38F0 /* GTLRBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 03516DB8E428B74D2EAD7C6BD495C209 /* GTLRBase64.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1218357DB97D5951081149FBA5B70228 /* GDTCORAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A721E1F4C09F25061FE467CE9A55165 /* GDTCORAssert.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 124B58D7736C2A7711AA1D349F8C5367 /* FIRCLSApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = F286D0CF9D2BB9280500D0BEF371437D /* FIRCLSApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 124FEF0C867A7EF1E893DC40D6685D6A /* FIRCLSURLSessionAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 89DD663D68B01CEDA8D5DD7A7688C917 /* FIRCLSURLSessionAvailability.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 132E0F619E4338E5D1B27E4C72076B3F /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D5AE2C53C67D677436CE6CD04DA9EF6 /* Notifications.swift */; }; - 13B5AFD622ED1FD12BEC15AC9BC9DD26 /* FIRCLSURLBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = F5FEC5F6547065D280C86B68BDD1F031 /* FIRCLSURLBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 13C27E8ACA307045C3BC4FA129336ED0 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BF37CEDA5CAF31E771E0C7176D3009E0 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 13F5C593C8BD79E242F4418651F5318E /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 5808F01CC644C8822ED92A6501E50346 /* GTMNSDictionary+URLArguments.m */; }; - 145EBF0214E02FCE0B4589491AA1771C /* GTLRErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A5CB1E8250DFED48AB6605D60B24C67 /* GTLRErrorObject.m */; }; - 14B182482F12EFB41BDC42320B4C375E /* GULAppEnvironmentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A49A82159AE994FA117DD2A224D363B /* GULAppEnvironmentUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 14E825F53E1646D064109800F678B545 /* FIRCrashlytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 24A2DAF94D528FA79A9FAE94E80B4A2D /* FIRCrashlytics.m */; }; - 15A92C516BE7A3A905BD4BBAF40EE6D5 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F5199404C80F781F8D73A1512C4079B /* UIView+WebCacheOperation.m */; }; - 15C1802873BA715223F3B6A23E4E9C99 /* FIRInstanceIDURLQueryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D3861EEEDA86A90235CDE69AB29047 /* FIRInstanceIDURLQueryItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 161378C7AEDEB49CC41F270739EE5DCC /* pb_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 9E60980352BA10E7145323A15C441BEF /* pb_decode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; - 165E6A708428B9D2C100A415553BEBE1 /* FIRAppAssociationRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 18120D48612929C8BC286B99E0D14BD4 /* FIRAppAssociationRegistration.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 166D5C2B254C64F82C58B9BB6013CEB1 /* FBLPromise+All.h in Headers */ = {isa = PBXBuildFile; fileRef = FCF9FE949C25BF907987EC9135AF6859 /* FBLPromise+All.h */; }; - 16A8E35133778310AC76A250222B00A9 /* GTLRUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 4164DDEF584A183DC8DCBD639583FF71 /* GTLRUploadParameters.m */; }; - 16C70105CC51E3C73D1107FBEF78F521 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B0B12FC5FC8C70AD4FC4B57E819D15 /* IQUIView+Hierarchy.swift */; }; - 16CE16CA4C764575C836DB921D2647F4 /* GDTCORTargets.h in Headers */ = {isa = PBXBuildFile; fileRef = DC40D7A7B5515F3005AB72D9B1EE2719 /* GDTCORTargets.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 16E803C5F3C639753771FC9E90267E4D /* GPBArray_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FE2C2F0DE4056780FA4BDAE92C4CE5B /* GPBArray_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 172376EEEFEEC333543559F3C3F4901F /* GoogleAPIClientForREST-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BA77E8D8E59C848D8DBDDDA1DB84F37 /* GoogleAPIClientForREST-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 172429B182DB4640882E7368262B7D99 /* FIRInstallationsStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E077B813DB0C11B78A07A65D62DA8F2 /* FIRInstallationsStatus.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 176D580D34B1957DF53471C4A2A9F3CD /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44D3EF70F3C66467AE20E8925F76FC7 /* IQUIViewController+Additions.swift */; }; - 17A544669711659B243BA35E9921C0AA /* MarqueeLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C3C16A25BE5F2D32BDCABC1BFF9D5BE /* MarqueeLabel.swift */; }; - 17C506048003C942B3871EE955439444 /* FIRInstallationsIDController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C21946C1202A1376ED7C530907C467B /* FIRInstallationsIDController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17F6D5360F9133E1E38E50D07418E40E /* FIRCLSURLSessionConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = BE6C0EA7ED43F0AF19D397798238EE5C /* FIRCLSURLSessionConfiguration.m */; }; - 184D6152B4BB3A5A1549BC786FD6EA99 /* GDTCORPlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = 531492CCB14B7590BCDF5EAE4E14C6C3 /* GDTCORPlatform.m */; }; - 18826A128F0EEEEE9571B2C1B9951ABB /* FIRCLSStackFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 21A490CB5C95FC7D5694E080845DD5A8 /* FIRCLSStackFrame.m */; }; - 1942F7D3B7722A5637C3FC0BE44B1E6C /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D32EFECDFCFA4965010C951905CA941D /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1945CD5D63A1C164AEAAA9A33E85571E /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 04F06448A244B8A7AF3286549D110F0C /* Alamofire-dummy.m */; }; - 1986B50C74F1697EA43F68335C93CEB3 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0186D1A585E443365DED29109D35A2F0 /* MultipartFormData.swift */; }; - 19C12C18218D5085864EB2DB2FA8B63C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6710F34F5F4B757F6F0A5D28A1E285B /* IQKeyboardManagerConstants.swift */; }; - 1A1409A5A7F08CFC2962801F1843E2CF /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = DD4356712EA57454D671CEE4FB4B02AC /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1AD27BA1B6DCCCDB266BA0539554299A /* FIRCLSURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = CCD17DE4F0C590404D8FC9209692B049 /* FIRCLSURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B4B78727AA4FE9361DFAC1D841AA08E /* GPBCodedInputStream_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 48BA43872EF764E48AA6ECE2231C8992 /* GPBCodedInputStream_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BE4104330E25C9C551E617AC92F1CF6 /* FIRApp.h in Headers */ = {isa = PBXBuildFile; fileRef = 53DDE4B27ED9B380105726BA2E553279 /* FIRApp.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C53BE05658F8B1B6EB333BD33DF8789 /* FIRInstanceID+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2692559EEA9075EE448BF6164879F242 /* FIRInstanceID+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1C7B8C73B4328DFECA689FDB24CAF630 /* FIRInstallationsItem+RegisterInstallationAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 22DFC8C7387EA331AFDA2DFEEB16EF0E /* FIRInstallationsItem+RegisterInstallationAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1CD4768680853319AF6D07245468DED8 /* GoogleUtilities-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 96D1377C930B2691422F4AB93CB5024B /* GoogleUtilities-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1CFEC9957725C5B3215DB456B4625BB5 /* GTLRUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 75120226B1292A2B3B9A4F6E4CA63895 /* GTLRUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D0C1F350F8ADCAC144EC211C47B6447 /* GPBCodedInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 42D7D77667604A229A7508293C89067B /* GPBCodedInputStream.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1DC20AD9785C1E1B8FB62993BE04DE1A /* GTLRBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3180116117B0AC65692CC686C0B0AB /* GTLRBatchResult.m */; }; - 1EA32A28D91E5C703F7D857B5033DBC5 /* FBLPromise+Wrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 3098FB3BE79FB8DB799D50C6A5AFCEBC /* FBLPromise+Wrap.m */; }; - 1EAC1E12CD734B9E254AEF82925D5416 /* FIRCLSURLSessionTask_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D1F925DC7D23DF0C9E09EF7C2F797B8 /* FIRCLSURLSessionTask_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1EDEA02B3A003892FE3AFE497BD4D81D /* FIRCLSReportManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B7B6106302B839251AB6A30F813B3DF /* FIRCLSReportManager_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1EE2C4E49FCCACF873F45B2CDD75270C /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23ED872068113D20E34A7C0FE767EDB5 /* ConstraintPriorityTarget.swift */; }; - 1F0100C3D20FA338B398C5F78B1A0365 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 588B89F3870A52C8FB4C2501B86E38FD /* UIImage+GIF.m */; }; - 1F1A9B2A5020FB207B9E6C40FB229CB4 /* FIRCLSThreadState.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F31644C8FE7BD91FFB64A4D23E222A9 /* FIRCLSThreadState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1FA2032CD0CD2428BBB055DC723A5B3C /* FBLPromise+Wrap.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 6FFBF7CA05659D5DE401970DE4BB9996 /* FBLPromise+Wrap.h */; }; - 1FFCF3FB0C4E23CCA97143D7F73B67C3 /* FIRCLSSettingsOnboardingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F110E5D5A1E15B6038114DC225EF15F6 /* FIRCLSSettingsOnboardingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2024153FE5A7D224384DC6DF51526A0B /* FIRCLSDownloadAndSaveSettingsOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D49A1F32A758094F2EBF25B4249E1473 /* FIRCLSDownloadAndSaveSettingsOperation.m */; }; - 204A829CAF0B73F3E2C0024554397302 /* FieldMask.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF9BF21D70F8DD5FF169FEE1345DAA7 /* FieldMask.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 20A39462BB5FFC35D47CA150A007031B /* FIRVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1D8F44E421E96CF0BC6CE63C3EAEB5 /* FIRVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 20A96B2CFC96983B266CF772A170974C /* NSError+FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 24431E1D279EDEB846674E18AAF45C23 /* NSError+FIRInstanceID.m */; }; - 20B09E04C79D4F3B570D3B33BEC6C916 /* GTLRDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C53AF6395EC4F9BF0B06EA0A5BA3E53 /* GTLRDuration.m */; }; - 20B3DAE9BDDA18A787BBF099E0B25A0A /* Pods-FoodScan-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D1E557C160ADF50B1E64450EAC68D08D /* Pods-FoodScan-dummy.m */; }; - 219A02FF93744C45AD8E7F9967C7FDE4 /* FIRCLSSymbolResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 439B76C1B3F44D348FD9F13349BD3182 /* FIRCLSSymbolResolver.m */; }; - 21D6AA139425D065D1444BA8B5463D59 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite in Resources */ = {isa = PBXBuildFile; fileRef = B6D500047C134A1E297902BB665A9EA0 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite */; }; - 226C0456943C7E43069A6588916D4894 /* FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 712F6E55B565C28AAE6E341A9229225F /* FIRInstanceID.m */; }; - 2276256A1419294841047255D0AD8A65 /* FIRCLSProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 44E0DC87C16CC2B49E30627BB4DEE356 /* FIRCLSProcess.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 227A587F18D2EB37D6068160BFC71D4C /* Api.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = CB79C2954E8BB40A3E4C45D328C1BC2C /* Api.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 22A8219489AA23B46BFF4A098DD9223A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 22D64E61CC94A99D0979A1018542E280 /* FIRCLSUnwind_arm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4568A166657BBE5FE273258DB62601B5 /* FIRCLSUnwind_arm.c */; }; - 2317CD5B9D7E2EF8EE6194230ADE38F1 /* FIRInstanceIDTokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FC3286B48C379120ED10D39109683F3A /* FIRInstanceIDTokenManager.m */; }; - 234341C16217B5D9C2949AFC6C7A2F03 /* GTLRQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DCE831830D3CB65642BFDD442C2FE11 /* GTLRQuery.m */; }; - 23637386943368B27A7443AD7ECFB13A /* FIRSecureStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 65921BF4B990681309B59796AFA89D8A /* FIRSecureStorage.m */; }; - 237FF242DE75CBB96B8FA460B1B68937 /* FIRCLSNetworkClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 603388BFDE5C928F931FAD31C811857C /* FIRCLSNetworkClient.m */; }; - 2388AC038B8B1F0DFF2E663DC79A7500 /* FIRCLSDataCollectionArbiter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A7EE05E7799B1B6BC98EE6F6DE974 /* FIRCLSDataCollectionArbiter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 242A1958A0D22185ACBE45768483B731 /* FIRCLSDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 434404EE6D8E9FCE1C0E9DB0530A7129 /* FIRCLSDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 245D0BECBDA2AD70E37386646825D53D /* pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 267FF34EDA410A680D9E1F3AD3E2B219 /* pb.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 249281A863DDBA3E28AA83127A59649A /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E1BA661379B9F206BCFEE1AEC17609 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 24DCEA59F2BF41A52DBABDCA35B9EFE8 /* FIRCLSURLSessionDataTask_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B4F36D04915CE9BBF129530A6123C4 /* FIRCLSURLSessionDataTask_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24E75AB72ED487809CEF13E397A9C32F /* FIRInstallationsAPIService.m in Sources */ = {isa = PBXBuildFile; fileRef = 891BE526713AE1493F0C2B749EF16E35 /* FIRInstallationsAPIService.m */; }; - 2578632AE8D48F79F007DDF055E34AC8 /* FIRAEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F328A56E9BE0C247F8E6B7697811341 /* FIRAEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 25EA58A3482D787BCD0D7E2C5C22EF99 /* FIRInstallationsIDController.m in Sources */ = {isa = PBXBuildFile; fileRef = B4D131CF5C54B1CFCC36697B48234DFD /* FIRInstallationsIDController.m */; }; - 25F08D18D712160400F44CFAB07102CB /* FIRCLSURLSessionDataTask.h in Headers */ = {isa = PBXBuildFile; fileRef = F7F34E4CD48A7AB9B65B6708052AFD9F /* FIRCLSURLSessionDataTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2617A0734A4A66343B3389FD052166BC /* FIRDependency.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B5621C660EC1234710268B631E1908 /* FIRDependency.m */; }; - 2677D4C1BD69B843046974245D98BDAC /* FBLPromise+Do.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 64CF2473E7C1FBAA9B6BDB6645C706D0 /* FBLPromise+Do.h */; }; - 26861832C3B4E432FBEF5214DBA89D47 /* FIRCLSApplicationIdentifierModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EEE194C41C9436DD8E5845F68DFC92F /* FIRCLSApplicationIdentifierModel.m */; }; - 26C5C5EC8C3E282F33B44969506562CD /* FIRInstallationsErrorUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = B6FC7057CA2D222DF9BBF4DF726A545C /* FIRInstallationsErrorUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 28A51E4B794819AB55AAFF10BBE37558 /* GDTCOREventDataObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D1D09BBDDD594313C5C8084323CFD26 /* GDTCOREventDataObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 28FF2DD2E26316CA3F053BEA685AD6A1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E3D44D9B9B1992DF3B506E22E3A7FAB9 /* UIKit.framework */; }; - 29A6EDAAAE1A95613D4DB3D55E0101F5 /* FIRInstanceIDAuthKeyChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 6678A53EB2732527F5B09AC47D40A2D9 /* FIRInstanceIDAuthKeyChain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A6828958668D47BD700FB843ABEC2A5 /* FIRCLSReport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CFE157363AEE3534CF29968BBE06DD82 /* FIRCLSReport_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A83CF71C9BDE564D115EE065E81D4B9 /* PromisesObjC-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 338F4077203DEEE3583D9A6F735B5FA8 /* PromisesObjC-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2BCF7176A112FF6F756A1D7BAFB824D8 /* BannerColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF838BA3C5FDEBC9CF2F0C570B06F68 /* BannerColors.swift */; }; - 2BF6FBC0A64BF107C5D64C61F1397770 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A80857139AE8EE48D8D6401A95E16525 /* SwiftyJSON-dummy.m */; }; - 2C61B040BA6A9A7AE66C4D9BA26D5520 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F688D2614ABAFEF502F1203E8F839FA /* SessionDelegate.swift */; }; - 2D056F7775CD41AC62C31F4AF660797F /* FirebaseInstallations.h in Headers */ = {isa = PBXBuildFile; fileRef = F208CAEE91004371B622765C2EE44B90 /* FirebaseInstallations.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2D92E1F063E8D6B58970A6B856A79E17 /* FIRCLSOnboardingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 068571CC13B36BF09077C43C4B109E9B /* FIRCLSOnboardingOperation.m */; }; - 2DBE5C098BECE5DA4B7A642F1E864627 /* FIRInstallations.m in Sources */ = {isa = PBXBuildFile; fileRef = D3CA33CB9FB0457CE6E198E04AFA7455 /* FIRInstallations.m */; }; - 2E1924FDCB7F8E4DFE91EFBB10D1EB3E /* rpn_lstm_engine_tflite_latin.bincfg in Resources */ = {isa = PBXBuildFile; fileRef = C3D54EFDF94E3155BABDA545BAE91F8F /* rpn_lstm_engine_tflite_latin.bincfg */; }; - 2E3437F0776A839EC10829E5AEAA7910 /* FIRCLSAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DBEE2C6BDD7084250BF1F9AE7E48355E /* FIRCLSAsyncOperation.m */; }; - 2F7BC4D9B94686FACDEBDC48DFCE53BB /* FirebaseInstanceID-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6696CF2DA9EA4B19E6DD987E6A1AB1D4 /* FirebaseInstanceID-dummy.m */; }; - 2F8D37AFD08356AD249193781291475C /* GPBProtocolBuffers_RuntimeSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 172B68489891580021F7DED933D5BD75 /* GPBProtocolBuffers_RuntimeSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2FADA7115AEFDCC59593DD4201572539 /* CosmosLayers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F2EB0C9C67DC1A4E3BEDD6728ADD84 /* CosmosLayers.swift */; }; - 3054D9D333E45CD3D8C72F66F3220573 /* FIRCLSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 09B7B88E8AA77EB15862F30BD8F95E61 /* FIRCLSLogger.m */; }; - 31087FFD7AA5D4E5B4D92E75428FBE73 /* FIRCLSHost.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E875E6EEC39B148F428DFD27DD2E0BF /* FIRCLSHost.m */; }; - 31194FCDC64BCC8BAC0BA1C7F777790C /* FIRCoreDiagnosticsConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = D514740650A34422209B0B01A550AD74 /* FIRCoreDiagnosticsConnector.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 311EDBB935A520BCD1B61D0496E4AE18 /* GTMReadMonitorInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 350FB03C92F2891B0889975EC8CCF278 /* GTMReadMonitorInputStream.m */; }; - 322B4E09F0E5A37C5241B4CD8A4207E6 /* FIRInstallationsSingleOperationPromiseCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 82404D8A9BD36D3880C0B059448960BD /* FIRInstallationsSingleOperationPromiseCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 325BA69A1881ED0F610714A630739449 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 326FFE44B8FD8D08C1C8D6B62D2E8455 /* FBLPromisePrivate.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = 66D90F6D20FF66048AA11A313212119A /* FBLPromisePrivate.h */; }; - 3295493808B9E3D87694EC8AE0ABC8CF /* FIRCLSFABNetworkClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E87A50F233BCC9A8C9914A5F18417B5 /* FIRCLSFABNetworkClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 32FB52A492FD7BC12D9C81F24A666483 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C22282E424832931EFA1A677984EE790 /* IQBarButtonItem.swift */; }; - 330DA634EB85DB4EAE9371494F1FB8E4 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA2CE876547BAF9E77462B6D141B9B98 /* IQPreviousNextView.swift */; }; - 33587BC5DFF60774B0929EB85F5F26DD /* FIRInstallationsHTTPError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EC6800E2194FC35CDACC58EE9E77D31 /* FIRInstallationsHTTPError.m */; }; - 3432BB0E9244B9F6761D3DBA5B1E2CBB /* FirebaseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 573E43AE4613B19B918E0F1953000143 /* FirebaseCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 34955DF300DC3AAD92B270D1D9645B78 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29CFF77175EDE90350F936491E5B8487 /* ConstraintRelation.swift */; }; - 3571F958A3907B3A806E62D50C2550D4 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71E9F80A1F8A66E35F0981825DDCDEA7 /* NetworkReachabilityManager.swift */; }; - 358C1028662DD71BB708FBAA4E1F9B3E /* GDTCORStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 362AF784EB515EF48142BC54D3776B99 /* GDTCORStorage.m */; }; - 361B77EA491A6D2EA9053D734B8FA5BA /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AD06A2F1B253EA35A18E0C78DC2AB25 /* IQNSArray+Sort.swift */; }; - 361D79BE822E9C28C56853DEC9913810 /* FIRCLSSerializeSymbolicatedFramesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 176CB56552D2469ACF1CD5FFD351F090 /* FIRCLSSerializeSymbolicatedFramesOperation.m */; }; - 36618DDADB18BA4130475DEDAE2912C6 /* PromisesObjC-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B2324379A88A90B566F9C2B5DC27D5A8 /* PromisesObjC-dummy.m */; }; - 366D177891521442DCE130C538F00D53 /* FIRCLSExecutionIdentifierModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BD565B727B823597DEC8B6B741B29046 /* FIRCLSExecutionIdentifierModel.m */; }; - 369EB95CFE66A57B344DC228B02236D7 /* FIRCLSFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FA646A6AE440903CCA45526069627326 /* FIRCLSFileManager.m */; }; - 36ECF190DB11F187D30AC4A02F165DAB /* GTLRDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 10F4994921385872D8B06CEC9A89568C /* GTLRDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 37000570A54C3DE13626FF4C01FC8887 /* FIRInstanceIDCheckinStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9676DF37760F7EEC517D2C2B69A2A1EF /* FIRInstanceIDCheckinStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3720F78D3C07C5D073DA18815F02F1DF /* FBLPromise+All.m in Sources */ = {isa = PBXBuildFile; fileRef = 319D8A27DB2C0C2D3AE5DB5508FCC503 /* FBLPromise+All.m */; }; - 373326FE763A2BCD67CE0695B8C31EAC /* FIRInstanceIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = EFC66B7E4950AA8895BF5A9BD3B0125D /* FIRInstanceIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3794B47AC3E56F166A8309F0B3F4FCD6 /* GDTCORUploadCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4486640994B008578642E91ACE50AA2D /* GDTCORUploadCoordinator.m */; }; - 38F15168BC4B9889FC4ECA28E8F039E5 /* Popover.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905D80979058E1C711F972E88EC9F511 /* Popover.swift */; }; - 3902CD29F25D10AF7E45DB04997F5BE5 /* FIRCLSDataParsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F8388FEC897E63D9660F11A2A8AA536 /* FIRCLSDataParsing.c */; }; - 394176581708AFA534C919CEEC026B34 /* FBLPromise+All.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = FCF9FE949C25BF907987EC9135AF6859 /* FBLPromise+All.h */; }; - 3A292C9EAB375966C8E355B0CBE14281 /* FIRCLSMultipartMimeStreamEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E88BC3293DF92604679A39B3B5D6862 /* FIRCLSMultipartMimeStreamEncoder.m */; }; - 3A38D297BC070D1BA76BC6B46B38E269 /* FIRInstallationsVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 9548675AD375D489884490EB3CDC2D71 /* FIRInstallationsVersion.m */; }; - 3ABDABBA9DED4143B735540EF8800CDE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 3B3831975810DF62388F3C4ABA8E7BE2 /* FIRInstanceIDTokenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CDCC58CE809341C6D4493EA20D1B46F /* FIRInstanceIDTokenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3BA0F19FA5649E347E2205DF90975279 /* FIRCLSDwarfUnwind.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A97731FCD86C676B5D97B628FEC623A /* FIRCLSDwarfUnwind.c */; }; - 3BB48E108BFA913311201A0452DBE8DB /* FBLPromise+Catch.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE948D6E4FC087AC1AAFA68E8232F2D /* FBLPromise+Catch.m */; }; - 3BEDC17BB8B9FF4AFAD81F162BAD9A36 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 3CB70A192E37184B49F215AC81839D0A /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = A67523113508377D071B36843AA3A10D /* FIRErrors.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3D66E6E3212B36050F0890E770C21463 /* FIRInstallationsStoredAuthToken.m in Sources */ = {isa = PBXBuildFile; fileRef = EA860384F140B3E312803E8D8A0F8719 /* FIRInstallationsStoredAuthToken.m */; }; - 3D68C0662AC8C858E10EA62B627DB749 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 3D7780B9CB5C937880FD2E05363B3857 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 3D93DDC55DF532FF02658E407A10659F /* FIRCLSThreadArrayOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 951F1E65B45612A23C586BCE421508E3 /* FIRCLSThreadArrayOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3EC52C8A6BABE4066E466519E31C3E03 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ECBA7FB9DDFE22B535FF31A3A8B9D18 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4001801CDAA397C9506F6FEB6FF0231F /* FIRCLSStackFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 90DF3B3C1602D193244A41EE77E63C78 /* FIRCLSStackFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4061CB819164FA259F8DDC5A582BF0F8 /* FIRCLSMachO.h in Headers */ = {isa = PBXBuildFile; fileRef = A378F74C2B30915962F15789EB48DDE3 /* FIRCLSMachO.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 40CA1402ED5C949A4B559D701A6F1F41 /* FIRCLSUnwind.h in Headers */ = {isa = PBXBuildFile; fileRef = CB11B0973DB51B95046870D13A199DC9 /* FIRCLSUnwind.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 412D4ABE1DC40451864EB3699803829F /* FIRCLSURLSession_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F521A514C493423191A951CFF5719BD /* FIRCLSURLSession_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 413EEA804A54552C016C37C60F8A41F1 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = A48266F2B80CE922C74A2C70EA5CD467 /* FIRInstanceIDCheckinPreferences+Internal.m */; }; - 41E5B21F4758B2411A95A7C72523536D /* CosmosView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0D4D8BD8938BF448EFFE673E9B0E2F /* CosmosView.swift */; }; - 4221AB8F56B1444AE176F2B13F81C557 /* StarLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BB9CEE6AE017B602256B28A2EAF771B /* StarLayer.swift */; }; - 42612C509955388150B148948FB6785A /* tflite_lstm_recognizer_latin_0.3.lstm_model in Resources */ = {isa = PBXBuildFile; fileRef = 6DF26784FB8C6754C21DBB3451ED7091 /* tflite_lstm_recognizer_latin_0.3.lstm_model */; }; - 42B5079C7E85125D63D3FEBBFEFE84DC /* FBLPromise+Do.h in Headers */ = {isa = PBXBuildFile; fileRef = 64CF2473E7C1FBAA9B6BDB6645C706D0 /* FBLPromise+Do.h */; }; - 42BEFF30EA110CB5406A74E7957CFD21 /* FIRInstanceIDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 16EC77150DF3C5A4E0E488C9EFED5C35 /* FIRInstanceIDUtilities.m */; }; - 43AD3D8791AE1BD745AB503707F19533 /* GDTCORTransformer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D60F1FB4F3DD45B0A607FD408B40E00D /* GDTCORTransformer_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 43FD3D8378A5146F0400A721417DD957 /* FIRLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 7450D75F3BA9518DF41D8CA7F5FFCFA9 /* FIRLogger.m */; }; - 4404A9C8152865C62A5B59B88640811C /* CosmosSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2E39F3A7DBCB21120519698BB1A1EA /* CosmosSize.swift */; }; - 458C446008CA668126D28194DB6F360D /* FIRInstallationsErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAF2BF46A81419D044D95AE0BAF84D3 /* FIRInstallationsErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 462EE0631FF95146DA55325066E123A4 /* FBLPromise+Race.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 11D1246044E4C62FC53A82B49BB4FDD7 /* FBLPromise+Race.h */; }; - 4631FABF63459F2D6A823E0467C4F06D /* GULHeartbeatDateStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B1E3D38D23D714B84CA8B20E7E452442 /* GULHeartbeatDateStorage.m */; }; - 464450D037D17ED5EE2322E180A6A9F5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 46D12956A20717723EF722E2F5861BFE /* UILoadControl-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D33BF0CAF409D4BB4DB6C3A1AD096FD1 /* UILoadControl-dummy.m */; }; - 4716E7BA4AA053D87D451FAA93D1F083 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 474BD176D99232B052652223E9CE4BDB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 48648F221CE56857A5CF0BF6BA8A7A3A /* FIRInstanceIDCheckinPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = C04EB758C696167A57DB872837B7948B /* FIRInstanceIDCheckinPreferences.m */; }; - 487D8A6C9791E23B47DB4273903B2ABE /* FIRCoreDiagnostics.m in Sources */ = {isa = PBXBuildFile; fileRef = E7E6F6E349AA71C63CE81C7BB121C13B /* FIRCoreDiagnostics.m */; }; - 48DFC6D391ED8091AFA7A8B01395D863 /* Pods-FoodScan-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BC53663530C402033E24E3E2C37349 /* Pods-FoodScan-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4912CD85665F520F7749EE78B163B6B4 /* FIRCLSUnwind_arch.h in Headers */ = {isa = PBXBuildFile; fileRef = CFE53228CC4463A73B9943588D83F655 /* FIRCLSUnwind_arch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 492A10FAAA612142CFE9419D7D77BBAB /* FIRInstallationsIIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = F726D7F9E6E241F7E3C2B91E106EB38E /* FIRInstallationsIIDTokenStore.m */; }; - 498E2052288D0AC61284AB67F55BF64D /* FBLPromise+Validate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD65B08397C7683A542085DFCB1D673 /* FBLPromise+Validate.m */; }; - 49B672390775E6B266E2CD42D4966B48 /* FIRCLSFABHost.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DB22045CD4C649059F31F7CA943F2A8 /* FIRCLSFABHost.m */; }; - 4A28FB203560B43FF91AD921D1F2EC3B /* FIROptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3821A2F76DB69CE7FED29D86A0DDF9D6 /* FIROptions.m */; }; - 4AA4B1F4954B83D3B08341F97A818A70 /* BannerStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FF87380DCB915F23ADBCD48E56466 /* BannerStyle.swift */; }; - 4AD35D41CD59019F247318208F90AE69 /* GDTCOREvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F3FF679B21267949BD62DE76656C654 /* GDTCOREvent.m */; }; - 4B2D731A4F8BA681E09560E216E9FB48 /* GPBCodedInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 78B4632B7495E163C76D8E856D436E02 /* GPBCodedInputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4B4AD435A9EE19886E4C62760BAD63B8 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D91BE52BABDD4C09275748EC35973D2 /* SDWebImageCompat.m */; }; - 4B702889DA1072CFE8C4362934ACD06C /* GDTCCTPrioritizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DF70D5F2538FD3C8E43DBF5A3A985B /* GDTCCTPrioritizer.m */; }; - 4BAFAB35D54C28F41E6BA9A4A87152D3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 4BBE0CD49BEA31E01AF305F4A7A67D81 /* FBLPromise+Await.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 6BE1EC704E4983E25C22741FD2BEFE0F /* FBLPromise+Await.h */; }; - 4C1FEF23B34B73DEB2035020FFC77F3F /* GDTCORTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65346E0768C41576066538B80D96D959 /* GDTCORTransformer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4C53A2C8A8ABF6786B777D6F330207A8 /* GPBMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C45452E82C34F4250B2D409DAB226AE /* GPBMessage.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 4CCDC6C99FB4FA6F23E891231599200F /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 341AE2DF4BBC4C6CE3738E6333BBDEEC /* ConstraintOffsetTarget.swift */; }; - 4D07637B5083A9377C9E004E5CBE60FA /* FIRCLSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = D1BD030ACD34773526FA4A3DD5E9A07A /* FIRCLSLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D18B33E54EECAD91DCB46DB155FCC1B /* firebasecore.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = AA78DF784DC85F09B4B8567481AF4DCD /* firebasecore.nanopb.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DCD0C54488122352500DFFA6BF8ACA5 /* GDTCORReachability_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5121B18C4C47856AA0A7C5E2A74811FB /* GDTCORReachability_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4E4C5979EE741E711EED84D47E832BA5 /* FirebaseCrashlytics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B85845D125B95C06F5ACC48522E1A5F /* FirebaseCrashlytics-dummy.m */; }; - 4E9410B094BC013ED7A667E0FFF1FEF0 /* region_proposal_text_detector_tflite_gray_quantized.bincfg in Resources */ = {isa = PBXBuildFile; fileRef = 98236D24F4C2D5489CE42615E4A9643B /* region_proposal_text_detector_tflite_gray_quantized.bincfg */; }; - 4F8300A9B7AF79D7D395D76E1F92049B /* GTLRDuration.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D880B0CFB05E8A73862E2406107F7F /* GTLRDuration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4FB891BBF32CC599E73213281A37CAFF /* FIRCrashlytics.h in Headers */ = {isa = PBXBuildFile; fileRef = F2A86CEF89DA5A288FC9BFD66702A3EB /* FIRCrashlytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50610569C8916D516CC73F63950CCB84 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 3654A8B96ED0BB5746E53E053911C9B5 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5067A8093A760F578609986B47037759 /* GPBArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 01424D35ABBF2002B14B88C218562E6D /* GPBArray.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5068A9ABEC28FE28695EB5F7FF9D0F85 /* FIRInstanceIDCheckinPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = AFC6E469AEE1C7946FEABB1877BF44C8 /* FIRInstanceIDCheckinPreferences.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 50F00319C4DF60021DBCE6264E68179D /* GTMSessionFetcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA695ED1F9A5F82B342F36A415A7547 /* GTMSessionFetcher-dummy.m */; }; - 510E404D41BEC8DF78F85A7DDE7B56E1 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = BE09DB0E5396BBBF34BE96A7DDA3B953 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 51B7514B8052CA7800B8E9F47F081109 /* GDTCCTUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1528CA2CFC35F900E21D7852758AE895 /* GDTCCTUploader.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 51E7759218F0E32BBAB776F409AF18D7 /* FIRCLSAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF42CD73A32C7487FEC389000C629A0 /* FIRCLSAsyncOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 521AD1329887CB8273DF9131F7333624 /* SDWebImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = F2D583D297D3BFBB8DFF2B8FC57CF055 /* SDWebImageCoderHelper.m */; }; - 526AC34F5C8DE45B154D88BF651D3278 /* FIRInstallationsKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 224825CB45FEBBD9EC76DED37E3D8163 /* FIRInstallationsKeychainUtils.m */; }; - 52F88C2925561A222243895A16C7FC1C /* FIRCLSNetworkOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F623A14595B84524A34B7A9B47316B01 /* FIRCLSNetworkOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 53053E6349DD9D4D31071F38E392BF59 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 510C9D583B30469E2A6C9B3C354AE31E /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5362DD88BC9AACB150B47C91ABBA5BF6 /* GTMSessionFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 618C299967F1A6E8FCF71E5D837B7F33 /* GTMSessionFetcherLogging.m */; }; - 53791F5E5F07400F92CFDFC89A432305 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD4EA0FD27E2A52E9A9F7CE92485631A /* Validation.swift */; }; - 53BB68D6D3026E7D3F19CA197381696E /* FIRCLSProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = C593786CC71BA458ACA15A655630E238 /* FIRCLSProfiling.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 53FB6843449733355AF473B9F4AAAC0B /* FIRInstanceIDAuthService.h in Headers */ = {isa = PBXBuildFile; fileRef = 97FD1D9845673451784616D0BD864DC4 /* FIRInstanceIDAuthService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 545A75E3EEACE311E80B97663712095C /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FF6E8D7150F767DB43AE4F899E9C9F7A /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5466976C48922B549F49B74814B33242 /* pb_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = BE0A8B7B5F0532386438277E17BC779C /* pb_decode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5486E98C7C67AF908948396C0A5E3783 /* FIRCLSMachException.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FBBD3AE477C1B0D664239B6D0E08E81 /* FIRCLSMachException.c */; }; - 548F9D5A135DBB94568112DA2C4C0A01 /* GTMMIMEDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D2260F729153D8F8FBEA8363397CFDA /* GTMMIMEDocument.m */; }; - 54A10145C738BE7483001F28E39DFD58 /* FIRInstanceIDVersionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FD1A4B810B85D7D5CC86D2DE1E18B869 /* FIRInstanceIDVersionUtilities.m */; }; - 55137B3BC2757A93EB623FDBBC491C89 /* FIRCLSSerializeSymbolicatedFramesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C818E2DD7B3A324E3E9DBDB3FB0990AD /* FIRCLSSerializeSymbolicatedFramesOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55197B8CE139FF6DBAAB5AA10ACB8BC3 /* GDTCOREvent_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D1A20A78F89127940FEC73E5ACDE332E /* GDTCOREvent_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 551E99BC10F7CDC9BC88F87F781671E9 /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 288942D3FB3AAC7BEF6D5EF82B17F8E1 /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 55B0D49B7C29BF1B510FCC028455FFC1 /* Empty.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = F026413B1C3605032FD6AE49213C1BBC /* Empty.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 56583D54084D80DE92C7517374FFBF2E /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C33BE09CFBFAF580CF62052631DCC1C /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 56BBD6B8F523E88447DACDA4C3E6CCBB /* GULAppEnvironmentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = A4BAEF8FCE597E3D9CF7201E4755C37C /* GULAppEnvironmentUtil.m */; }; - 5750D7EE79C60BA1522976E970479A14 /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5F8C1268B62ABDEB0E23A55C15A96D7 /* ConstraintLayoutGuide+Extensions.swift */; }; - 588BB7D3AE9936B4CC01BBC27CF2D4F5 /* FIRInstanceIDKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 08FF81A6AB422695EE3DC72CB0C58686 /* FIRInstanceIDKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A52FBC586D31A183E473B9854B785E8 /* FIRCLSDemangleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 597C31CDDB44D8A21D91DB1DEB3F37C2 /* FIRCLSDemangleOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A7C5D1E7969AD38B89CCA0F97B95D25 /* FIRCLSUserDefaults_private.h in Headers */ = {isa = PBXBuildFile; fileRef = BE51E96565306AF33366D3F92C9364F1 /* FIRCLSUserDefaults_private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AAB307D3CA099D351F780FD86685FDD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C885905D9C970F74BD84428DD2F4E31A /* Security.framework */; }; - 5C7B76FBAD8574062F60041B012FE052 /* CosmosTouchTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48BF607438180804396BA02BD2401345 /* CosmosTouchTarget.swift */; }; - 5CBD5A6A43FA85237AB6B374D59A0DB8 /* GTMGatherInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 859B9E184A9DA3541AD938C4A3086B60 /* GTMGatherInputStream.m */; }; - 5D2095717E83E0F4B8757C7B6DEDF2A5 /* FIRCLSFCRAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E4A62825AA0DCEF2D86BBAD53AB3679 /* FIRCLSFCRAnalytics.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D70B3511D13145C91476C90CEF3A211 /* FIRCLSNetworkResponseHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B63497EBE0FE73C5D392AAD155ACF71 /* FIRCLSNetworkResponseHandler.m */; }; - 5DCA05247C7A0E39B2A163615E79D5F3 /* FIRCLSUserLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B2922AC23A8F254705AEE1AF3A26BD8C /* FIRCLSUserLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E191D43593086B72216075D011747AD /* FIRCLSDataCollectionArbiter.m in Sources */ = {isa = PBXBuildFile; fileRef = 75C73D74F6CA0825E437A5FDFB321B42 /* FIRCLSDataCollectionArbiter.m */; }; - 5E1A0543905AB8FCAC0402AF11B81281 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A75EC13CF00DBD266B1CAD2E97BF5E7 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5EC2FD08232A1C76BB756E57AF74917E /* FIRAnalyticsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CA4BBFEABBCEFB601499A9A6777F28C /* FIRAnalyticsConfiguration.m */; }; - 5F797ABE4D4DE15301EA715AE43D4344 /* FIRComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F23B3647BB86F9C6180FBF2E8BE9E0A /* FIRComponent.m */; }; - 5F99DDB020C6D45944002B4287DDABE9 /* GTLRDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = D0B2FDAFA70FA4B0BC2118584E6E421A /* GTLRDateTime.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 603D19DAC136871466C1D1DD666CF30A /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D38ED208B2DE52F4CDD0D0400572507F /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6065F3817F6C04764017BC555CA9ABA4 /* FIRCLSPackageReportOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8650E521A61E8BE4A953D3091334B690 /* FIRCLSPackageReportOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 608560AB0AE0E1B8E7D315696C4D9EBD /* FIRCLSConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FD5851DC0FF8867204AB393DB83EB1A /* FIRCLSConstants.m */; }; - 612A8F55C99DA596C9F8496DA257B012 /* GTLRObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 84EDA72DC5DBE0EBFF652C4725EE1E97 /* GTLRObject.m */; }; - 613237BD72C655AEDAB70891962ACB93 /* GDTCCTUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 66BE54A64A2353B6F6BB988688E14AAD /* GDTCCTUploader.m */; }; - 61857850A19756A357AD6696D42E69A4 /* RightToLeft.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18E7BC86535B3F1D66E9FD9B9D1664D3 /* RightToLeft.swift */; }; - 620772EEA5200EFD2F3C5E3B20EC68FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 62BD10EF657093EEE5877D8A1A2D6FE2 /* FIRInstallations.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D780E4885DF61F8ACE5E993E326A76B /* FIRInstallations.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 62FF054BFDC9F3056446887A2FBCB59C /* FIRCLSURLBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D11F933B4868F0A41C81A00648D9E62 /* FIRCLSURLBuilder.m */; }; - 631CEACC421CF7F2B2AAA82783196C4F /* NotificationBannerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 357E1EA2BF1A3580154042B603D344AC /* NotificationBannerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 63A4C245901C7786BBA8EA6CCFC6084D /* GDTCORAssert.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F89F3E850D1089EE2755116B5552347 /* GDTCORAssert.m */; }; - 63C70D2D687A5E57FDA3D5EF3288DD67 /* FIRCLSSymbolicationOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B5F612EB8CDEB28B257CC71D136F8E /* FIRCLSSymbolicationOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63DFA75489F35EF827B4C605E41774FC /* GDTCCTNanopbHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F54665FE0ACB0A881732FA8D8A4A16A2 /* GDTCCTNanopbHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 63E563046618323625830826D55C68FC /* GPBWireFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 339420666ED4390CC426038AC6A42DED /* GPBWireFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 64744C911253C3E01461FAD7C935C8D7 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07EC4EAFDB287D70087CDB74272EA846 /* Result.swift */; }; - 65332E624BEBAC6BED2932B7A9B70F7E /* SDWebImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F23B6DABE4CEBC67FA0DB441CD22EAC /* SDWebImageFrame.m */; }; - 653562477C03866059BA00E471DB0493 /* FIRInstanceIDCheckinStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 184AB3679BEDBDBEE19D6CCE99E6C24E /* FIRInstanceIDCheckinStore.m */; }; - 66024371D236337E76052583A7DC5D61 /* FIRCLSURLSessionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 438FC9F5ED768BF7FBFA02AF8645C2AA /* FIRCLSURLSessionTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6667618D56182D37B73DCB409D666BEB /* GDTCCTPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 69A0B9DF544914F9DFE48B1878F863DD /* GDTCCTPrioritizer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 66C55F598883BB9E871ECFEFF5B3D11E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 66F022DE0D60BC1091DA0FDBEE86232D /* FBLPromise+Testing.m in Sources */ = {isa = PBXBuildFile; fileRef = D37FCD3205910563C2025DE3FFD2F158 /* FBLPromise+Testing.m */; }; - 66FE1248811063D46428426D18BB425C /* GPBDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = B96821357715CF0E3B1A62937C9ABF55 /* GPBDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6753F2E2C864409D4C86F492C2E53A34 /* FIRCLSFABNetworkClient.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDD86A49B7424EEDDAF144D6ED345B3 /* FIRCLSFABNetworkClient.m */; }; - 67E7CC98657717872D159DA4F0AC3110 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C437CC3933CE12ACEBF5AB409E2111E /* NSButton+WebCache.m */; }; - 681342E5C18E296BF40684DDDC04D88B /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25D9219D08773A7DC222DA0E8CF74521 /* IQUITextFieldView+Additions.swift */; }; - 68391AC980C6E5AF090EA95C5DF23476 /* GDTCCTCompressionHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = F3571D337FA63EAE0F31442C9BBEED81 /* GDTCCTCompressionHelper.m */; }; - 68850EAA513E9381034388A5F24E42B7 /* FIRInstallationsStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B45A4BC1D56166F0805B8957CFF0EF9 /* FIRInstallationsStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69738C850ACCEF2BEF52ADF0970E4FBE /* FIRVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D44413BA579E2038C70A2E903A27C8B /* FIRVersion.m */; }; - 69C560FDEA9EC9240CE68A27B4495E51 /* FBLPromise+Recover.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B2AA935B07EC799232D6DB26E584850 /* FBLPromise+Recover.h */; }; - 69C76A41F2C9D69672A0E28644703A3B /* FIRCLSDataCollectionToken.h in Headers */ = {isa = PBXBuildFile; fileRef = D4B0021FAAF4ACC70B30B11C41289250 /* FIRCLSDataCollectionToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A02E3C707A1A104DCDD85953BC8BDEC /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2111F369D0BEC039701379A7637608C1 /* IQKeyboardManagerSwift-dummy.m */; }; - 6A4D65C0A425129DED934CE1B683FBBB /* GoogleToolboxForMac-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 03183A06C140BE5D20891268231DFC7D /* GoogleToolboxForMac-dummy.m */; }; - 6A4DA0F3D04D1D6959AEB6AC0FF30D3C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2587798F5A38D40808ECCDA0C060CCAD /* CoreGraphics.framework */; }; - 6A6F010D18E84636AB1CB29166B0B6B7 /* GTLRVisionService.h in Headers */ = {isa = PBXBuildFile; fileRef = ADE68A1DB87E18DF0EFCBA867DD27A2F /* GTLRVisionService.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6A73F254A4CEE817CC7AB09331B63DCB /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B9109100177A4B153D68E3380403AFD /* GTMNSData+zlib.m */; }; - 6A7C5C689624628C965B335AF05130EA /* FBLPromise+Recover.m in Sources */ = {isa = PBXBuildFile; fileRef = F064649FD24DA580E8F889A62CAA27DC /* FBLPromise+Recover.m */; }; - 6A956D0D099F0C77C07C861326865873 /* FIRCLSAsyncOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A7EC94F4EFE13D665496152D832B7A44 /* FIRCLSAsyncOperation_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6AB4B7DB37920D2647E4FCDEF47CEE6F /* FIRAEvent+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA11DCEA363993FE8CE9C6E6C5E5319 /* FIRAEvent+Internal.m */; }; - 6AD370225064F8C670E808A167FF6FE0 /* GPBRootObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 244F18C6E16488B0C60980FDAD543DBD /* GPBRootObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6B0FEE5F3439CFE86E249010CC2464EF /* FIRCLSCompoundOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F1DDB932632B4DD06F4721ED74A3E0 /* FIRCLSCompoundOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B71975D2E6975280AE68A7891DEB7FB /* GTLRVisionService.m in Sources */ = {isa = PBXBuildFile; fileRef = D9181362112EE2E5364D786222CFB8C1 /* GTLRVisionService.m */; }; - 6C1987336BD6B1F55EFA940A69A855F5 /* FBLPromise+Testing.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 950BD2AE277B9A8A1231A1885BD7B600 /* FBLPromise+Testing.h */; }; - 6C4530320BC54A9D8D79F5E01E417DD4 /* FIRCLSFABHost.h in Headers */ = {isa = PBXBuildFile; fileRef = A0EBCFE68DF574D54C95FB927D30118B /* FIRCLSFABHost.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6CA3ADBF9BE822A05AD91650CECE05C8 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 868F3AAB49310795C5516AA3D75236B6 /* UIImageView+WebCache.m */; }; - 6CC4D20C8D41CF711A54799DC6F7482D /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40766AB63041EE60BE9F2EDBACFB2033 /* ConstraintView.swift */; }; - 6CDEBF430666E2C56B0FF06C9CE62435 /* firebasecore.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = DE851F52A9BD6146EBA589A9F2AB0C78 /* firebasecore.nanopb.c */; }; - 6DD62D4DC46BF8AC8BFBADE2F0B36D17 /* FIRCLSCodeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = F96127A7EB0FF0D4ABACDC5F0D7840CF /* FIRCLSCodeMapping.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E67261AA5CE5A2E127881C8D5988D8F /* GPBDescriptor_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D1729F1B8052D9DC7D57A84B39A03B4A /* GPBDescriptor_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EC6F7921D06D08FE899E0F946BB0E5F /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 39A7B1FC2C965BA5039E209FCD1F491A /* GTLRBatchQuery.m */; }; - 6F6F3576CC9FA481EFA3723EFF19BE10 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = DD6C61BAF694527111C893EBBB17D700 /* SDWebImagePrefetcher.m */; }; - 6F9B266DE2E6DB394F7B31D8364F8797 /* FIRCLSByteUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 72EC7F91D344643F41CF915D81B8B2F8 /* FIRCLSByteUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 002BA96B45D77ECDE570F473309E036E /* FIRCLSFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 52CC819F854449E596D7C0218A7D7D07 /* FIRCLSFileManager.m */; }; + 00E517DFB19E7C0A73C5D3B322310A5C /* GPBRootObject_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A0F26A9D074B7EDE93F0A7C836555AA7 /* GPBRootObject_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 010361742336CE941AA1E46E08DBD044 /* NotificationBannerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35B432C987C625DEDCC05F238C34908F /* NotificationBannerUtilities.swift */; }; + 0146E9E17FDC2E025919B65C4359F2F0 /* GTLRQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 06D6E6F7A26B5CDF44813D492ABE44CE /* GTLRQuery.m */; }; + 015CAE1AF64236E90B6AF8204CE6B24B /* FIRCLSURLSessionConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDF9B371305736240C5E072780693E1 /* FIRCLSURLSessionConfiguration.m */; }; + 0172BE2FFACD1FC2E20E6691190CA1BC /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 20305497DC1C08C7DCBADB16AFBF68E0 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 01AD59420F129D6A8F14FEE87CC304A7 /* FIRCoreDiagnosticsInterop.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7BAC5079D329FDC111CCE56A017D51 /* FIRCoreDiagnosticsInterop.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01BBC0FFA68B7B4B99FEA7B085CCCF68 /* GTLRBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = D6E35806B1ADD32B871A5414B6F458E7 /* GTLRBase64.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01D79807B319F1ACDA88E81DB693C468 /* FIRApp.h in Headers */ = {isa = PBXBuildFile; fileRef = E12461453BE9CE51FDB5DF143433B64C /* FIRApp.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0289E022CBD2E9108C18F25394811F7F /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1160D20C92B38262D3D9BD8BF2119929 /* ConstraintConfig.swift */; }; + 0298A6F18E29528F5AF305534BECDA5C /* SourceContext.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = C0919E5D891EA663A1698C14A98DB343 /* SourceContext.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 02C865380BA1694194104DE95FAA3996 /* FIRInstallationsSingleOperationPromiseCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DAD5FEB39636F27CE25313B8CB76247 /* FIRInstallationsSingleOperationPromiseCache.m */; }; + 03C64DD308C08E70198291C715EAB442 /* PromisesObjC-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 929CD97FA8905CADDE3271B9B6B47887 /* PromisesObjC-dummy.m */; }; + 043BF94AB27B8329BB97C03FC2C083F6 /* Protobuf-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 367C6B028D79F5B23435147118F9E13C /* Protobuf-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0440F9FC699208FAB1505E492E0767AD /* GULMutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = BA36FEDD104E5F0CA64A4C376FF2148A /* GULMutableDictionary.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 048FB2D0C55E290D46BE323CBE15BD18 /* GoogleDataTransport-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B607B08EA816E182180FB6DC29BE3878 /* GoogleDataTransport-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 049FC8D781A7ECAED15F25718502D54E /* CosmosAccessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = E121B6259D75B3FE67BDCA16B0F47EFB /* CosmosAccessibility.swift */; }; + 04CC92D85B59F1ACF01EC8B8DDC463C9 /* GDTCORUploadCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AB1122A38DFFE7D2821901A4B85C9FC /* GDTCORUploadCoordinator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0510E4BA33BE188F1679AEA66059461C /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AFB9BC083A109B15A557D990B132E7E /* FIRComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05808F0E34F05B9919A9F64A8103EBEE /* FIRInstanceIDTokenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9B50D1E08657347194A18DA9107C78 /* FIRInstanceIDTokenInfo.m */; }; + 05DFD786F217BD0DFBFB5F57D80236A5 /* CosmosTouch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F6E746701AC73DCC98361610FF0A71 /* CosmosTouch.swift */; }; + 07F2C39799AB2A7C79EEA1A72FC7E990 /* FIRCLSCompoundOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F964152A57EF9726875C6BCB81E63273 /* FIRCLSCompoundOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07FD708A9CF542FA1FEDAAB50AC787E0 /* Popover-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A1706557C0ACB34059F0E56A60181F7 /* Popover-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0810BC5113992B0E28E7E0D91D8EB33C /* BannerPositionFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D65F0D204A6F8D2259A875878A315D /* BannerPositionFrame.swift */; }; + 082F001006A4B880FD6DF6A40295DC36 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 49D23190F62F83B77B85BC33B001580A /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08716514767800D87FDD8A6AACF45B52 /* FIRExceptionModel.h in Headers */ = {isa = PBXBuildFile; fileRef = E901C07F21ACCFFBBCC8DFF7C1FD5BCA /* FIRExceptionModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 088AA5BC39EF49FA5E4BCC221C3457F8 /* GoogleDataTransportCCTSupport-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = ED38CBC820EE0C6A79CE9C239EB2E916 /* GoogleDataTransportCCTSupport-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0890788E6B5D2F26F7650194B7AB3385 /* FBLPromise+Retry.m in Sources */ = {isa = PBXBuildFile; fileRef = D661F110E5BEF0775276C4A3A9E0D7E8 /* FBLPromise+Retry.m */; }; + 08CDBEC63CC1660C83F93E2048745828 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FE428A754FAEA4E158F716D66750DE /* ConstraintMakerEditable.swift */; }; + 08E427A032ADAB64225CA01C76E7E3A9 /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5EB426ABF9FCA11F89F3F309AC9FE3C /* IQUIScrollView+Additions.swift */; }; + 091769C8BCC34033B6A672C0488E0371 /* FBLPromise+Await.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3499ADEFE2D73B02FC8256C8701E25 /* FBLPromise+Await.h */; }; + 09AB9EE2C25E485CEF7330EA9589E748 /* GPBProtocolBuffers_RuntimeSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E6747620919AD62D6CC376A5FCBD7EA6 /* GPBProtocolBuffers_RuntimeSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 09BCDAA467F321AA902547810430D5AC /* FirebaseInstanceID-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DF275FD8171E77E18A2ACFADB2C28C1A /* FirebaseInstanceID-dummy.m */; }; + 09D03F80892A9C1F559A675D105A51F8 /* SDWebImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = F2867A2497AD088799DFEE361ACDEFC2 /* SDWebImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0ACC285E6095C841069B68827972B9B8 /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A5B5AAEF42D3C97C4F84A8A2E2A120FC /* NSImage+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0AE054386830558FA0A5894C961BD72B /* GDTCORTargets.h in Headers */ = {isa = PBXBuildFile; fileRef = 67DB30018627619C8E5A77A5EBFDA06D /* GDTCORTargets.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B12277C99C4A6D21425F304983DE9D4 /* FIRBundleUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A6796375F866CEEF3580B74B0550633 /* FIRBundleUtil.m */; }; + 0B38AE10F777F608B8C792D5B7B0750F /* FBLPromise+Recover.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A95FCCFA2DD142994A1AD2D9B212760 /* FBLPromise+Recover.m */; }; + 0B833433CCD0C0AE0E001198038FA357 /* FIRInstallationsIDController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EEEC209D10B9E73FE93DBEB46FE10A /* FIRInstallationsIDController.m */; }; + 0B8E8A98466E25C4043C3AD8419B4057 /* FIRInstallationsSingleOperationPromiseCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D02A4DAB91A7D18658CC7BEA453853B /* FIRInstallationsSingleOperationPromiseCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0BEE43C336DF6BBC8BF6FFE7C6A7490C /* FIRCLSAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C0F53E584067D52CC1FE58031A8A490B /* FIRCLSAsyncOperation.m */; }; + 0C5E11DE24DAA737704B355F5F2F3426 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B5503A38874184741D499982BB791E6 /* ParameterEncoding.swift */; }; + 0C714B462B98FCAD0DD45673A35EABE0 /* GDTCOREvent+GDTCCTSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BB8CB14A002C709BEF0A96BC7CF674B /* GDTCOREvent+GDTCCTSupport.m */; }; + 0CE558513994F7C18AAD73AC559E4F8F /* GPBProtocolBuffers.h in Headers */ = {isa = PBXBuildFile; fileRef = F790367FEB9B9A0FE4644F5091D61BF9 /* GPBProtocolBuffers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0D11973942815022ABB3C1BB1B584B73 /* crashlytics.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = 73862593A86A7047265221E8F359D1A0 /* crashlytics.nanopb.c */; }; + 0D3A65850D7D7B772181139F657999E5 /* FBLPromise+Any.h in Headers */ = {isa = PBXBuildFile; fileRef = 43229DACBFD4F93A4D69544035F4105D /* FBLPromise+Any.h */; }; + 0DE7771E9870ACC600691283E1DF5726 /* FIRCLSReportUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = D3CB04CF9D27A14FE20F66B135583E3F /* FIRCLSReportUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0E49185283CD5FEFDE1C1083C8043ABA /* FIRCLSFCRAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C23709D9E5230AE0740B11E2F77FDF4 /* FIRCLSFCRAnalytics.m */; }; + 0EB97AEF6C686972C71AE7F66077FB8F /* FIRCLSApplicationIdentifierModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAA2085B3F3F2C5FF3A6A63E07CCC9B /* FIRCLSApplicationIdentifierModel.m */; }; + 0F3313B90CD038482B00116295580845 /* FIRCLSURLSessionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = CB094D325E2D94FFEDDD9215A3E5B073 /* FIRCLSURLSessionConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FAF96ADF0F8EFA295880E16B14659FF /* GTLRVisionQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = F7513CF33C759FCF94FE6E009EE608CC /* GTLRVisionQuery.m */; }; + 0FC427138A0D11CC18C78972E6D30E57 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F27F5DD83CA67CC41FC0A02B14D98D /* IQToolbar.swift */; }; + 1093E9C346CB92D68CE2AC21C2C864AC /* BaseNotificationBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4618A2F8640A65CE51E183364006936F /* BaseNotificationBanner.swift */; }; + 10A44B18B300E2B0BF5BF88F6F2E585F /* CosmosRating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2688F6CA8134AD73A3FDE51E86D00E6F /* CosmosRating.swift */; }; + 111C6C3C97CAF8814D0BA17DF68B785D /* GDTCORUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = F8DFAE3961EC1EB6B68B23AA000008F9 /* GDTCORUploader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11657C23FA2ED4D3F5FFFA98DDA15578 /* cct.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = 87768C3E86840077E5C5D2A8E35FF83D /* cct.nanopb.c */; }; + 121D7002566ADED8377461C6E6C729C3 /* GULAppEnvironmentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 04DA57D2C1E6D49C4B5781F927C9A3C6 /* GULAppEnvironmentUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 127BCDC251EA4482DA1146124EF74EF8 /* FIRCLSSignal.c in Sources */ = {isa = PBXBuildFile; fileRef = C6FBB890FF5FC74FA5B2AFC3D425EA37 /* FIRCLSSignal.c */; }; + 12B8FEC319DDEBA7FC75F137F3E72783 /* GULAppEnvironmentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 350A3A7AB41F9DAF623E198BC6AB391F /* GULAppEnvironmentUtil.m */; }; + 12DD4308260D79B5077A87C6A867264F /* NSError+FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = F241E619955DB49734117035F5C322F7 /* NSError+FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 132E0F619E4338E5D1B27E4C72076B3F /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01A18FFA505B58A1E51C2458CE8BB0DB /* Notifications.swift */; }; + 133D3A80835076E42048E7FD1F2F3EE1 /* FIRCoreDiagnosticsConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = B9BF6E7DF2E6A6A11465E97EB6BCB1FF /* FIRCoreDiagnosticsConnector.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1377C7B8570066C33116004D43823AC6 /* FBLPromise+Async.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = E5BB360882D1E8097C2B99C4F7BAFD89 /* FBLPromise+Async.h */; }; + 138F537248E2CE7CAA581B84C7B8134A /* GULNetworkURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 0129FFECB5BE897E20ED8B4C23A19F4F /* GULNetworkURLSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 13C27E8ACA307045C3BC4FA129336ED0 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AAD88F510F99CC7FABAECCC29637E8F /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 13D6EE1467D1C6A72952F63E8C12BED2 /* GPBWireFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 033373303D8729FC48E0A5E6FF5BDC63 /* GPBWireFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 13E5C4E6E79AE2F6B32CA8E40F8EF29A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00219A677D07FDE9DC4472059174638 /* Security.framework */; }; + 14196090AE728591AB110BAB0FB6EFE5 /* FIRCLSThreadState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0304A90CD42C0A9A97BA4AB0C950257A /* FIRCLSThreadState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1533CEF43E02B82A12E2329A2ECFC4D1 /* FBLPromise+Then.m in Sources */ = {isa = PBXBuildFile; fileRef = B0201621FFB18E55FBF6AA5605CE8626 /* FBLPromise+Then.m */; }; + 1553FE46218A4E2C73709CE942694AB5 /* FIRComponentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB9596D503C86F7F2065444DDB84827 /* FIRComponentType.m */; }; + 15829F7A1706C55CB93B72787C08D054 /* FIRInstanceIDTokenFetchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 69D29151B9D73C9879A5459D8D62DECC /* FIRInstanceIDTokenFetchOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15A92C516BE7A3A905BD4BBAF40EE6D5 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D3672BEF934C6201FCDEF325C82FDE7 /* UIView+WebCacheOperation.m */; }; + 15C04C13DE77CE76B13796E498A7ED11 /* GULLoggerCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 520BBFA92E20D1F43B049DE5A0DA13B2 /* GULLoggerCodes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 164EFCCBC8248C2726EC42F132F73DC6 /* FIRCLSCodeMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 032072736174D7F2E85C5BA43B10AC9E /* FIRCLSCodeMapping.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 16944AE804F90B7E184EE7AAD0676661 /* GTLRBatchQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = DC2FDF5233932C4133D24F0B8FBCA41C /* GTLRBatchQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 16C70105CC51E3C73D1107FBEF78F521 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45B4659964722AE29215F34C2598A065 /* IQUIView+Hierarchy.swift */; }; + 176D580D34B1957DF53471C4A2A9F3CD /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74FFD15BD93B0C189C9B756E238B2D80 /* IQUIViewController+Additions.swift */; }; + 1771AD910ED7F5E42B4E0F840572274C /* GTMSessionUploadFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D2F5669976341F2D3BA082DD254619A /* GTMSessionUploadFetcher.m */; }; + 17A544669711659B243BA35E9921C0AA /* MarqueeLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84195E81AEA157FD451A7FE02A941445 /* MarqueeLabel.swift */; }; + 17C836882B190E6C4E4ADE4CA0E14A45 /* GTLRDuration.h in Headers */ = {isa = PBXBuildFile; fileRef = F10D9C257882F584708DEA43803FE56A /* GTLRDuration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1825C389D1AD15B06C538418516A2F22 /* FirebaseInstallations.h in Headers */ = {isa = PBXBuildFile; fileRef = D1FE78121FD66254B00C9AD2C41C377A /* FirebaseInstallations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18395BDD791C941B79289B97055D4B96 /* GDTCORUploadCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B972E2CCDEFF41259D1B8F4C6A63113 /* GDTCORUploadCoordinator.m */; }; + 18CD29968DD1D60AA26B0087A17E8940 /* GTLRUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 091735C23D1CA8B028105411310731EC /* GTLRUploadParameters.m */; }; + 18DCB28E5CDCB75CE287949880AA6910 /* FIRCLSUserDefaults_private.h in Headers */ = {isa = PBXBuildFile; fileRef = F658D9B69151585486B168D715F0D0D9 /* FIRCLSUserDefaults_private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 19329F2BA82F42CF0923F65D350195C0 /* GDTCCTPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D0EE608D2546961EE1839BCF0D7B45 /* GDTCCTPrioritizer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1942F7D3B7722A5637C3FC0BE44B1E6C /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C8C317561E7A87A548178712E84A069E /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1945CD5D63A1C164AEAAA9A33E85571E /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AC17E340D03C27B3DA3C106567470567 /* Alamofire-dummy.m */; }; + 1981FC08F716C430BDDCE6DDCD93674E /* GPBBootstrap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8134F716B87B3E8E6ED20A90F4BA843D /* GPBBootstrap.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1986B50C74F1697EA43F68335C93CEB3 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67A70FAE7E97277E838C8C43643A1B9F /* MultipartFormData.swift */; }; + 19C12C18218D5085864EB2DB2FA8B63C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3EECF44CC74B13A8017A288493FD418 /* IQKeyboardManagerConstants.swift */; }; + 1A1409A5A7F08CFC2962801F1843E2CF /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = DE4B3BB5175D01156AAA692EF3ADE151 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1A398322CF3DB5C86F83BCB5420E65D2 /* GULHeartbeatDateStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B55AAFCFCAE88D4D115DF85DB07C782C /* GULHeartbeatDateStorage.m */; }; + 1A8190C55D6773905FB05512B6085D5B /* GULUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C052D1555B4F9AF8353DFFA698E763 /* GULUserDefaults.m */; }; + 1A9F88EFB21376BA51D4D1A9A8B105C0 /* FIRCLSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = DD6706FBA0DA32E61A181C8544A2C764 /* FIRCLSLogger.m */; }; + 1ACB5E23015E6B3F12C4816642C10660 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2298E65D24495F9C675DC8C8D0BE03F4 /* FIRInstanceIDCheckinPreferences_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1AE15D46A77B22FB409FDB1A8AD9F086 /* GPBUnknownFieldSet_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 292331EB8E2A2E71C7B62D57ABA9A5E4 /* GPBUnknownFieldSet_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B00BC30171A405432AD16BF6E22E14C /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34FC5648E501433F254403DEA249CF5 /* ConstraintMaker.swift */; }; + 1B358511CE9C9C8F38D7F2800B80FE04 /* GULAppDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 46576E3F63E4162629160135C4364BA6 /* GULAppDelegateSwizzler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1BA3F5AA1ACDA8E62989D9637D71CEBF /* FBLPromise+Await.m in Sources */ = {isa = PBXBuildFile; fileRef = 058509F6BFE8393216E1B2D8BF119A37 /* FBLPromise+Await.m */; }; + 1C5794D7143F4AA76D2B6E0E7E50AF21 /* FIRCLSDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F34DB17D07BB8C151D0A0516BE6D1E34 /* FIRCLSDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D1ACF7CF9F10D26E12C3D78EE697173 /* FIRAEvent+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = D9086528614205DE38D93BFA4F35A8B2 /* FIRAEvent+Internal.m */; }; + 1D373059BA135DB2E1DF54C581F86CAD /* FBLPromise+Then.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B13E96214788D7026649E291319901F /* FBLPromise+Then.h */; }; + 1D98BD5A9BA83860C86BFE6B4FD556D1 /* FIRInstanceIDCheckinService.h in Headers */ = {isa = PBXBuildFile; fileRef = 99B52929F48E237997ADDFDA868DDF26 /* FIRInstanceIDCheckinService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1DC0892840D7988C87A0DBBECE478501 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 622607CEEB27681907DAB43BEA6EBD9E /* ConstraintMakerFinalizable.swift */; }; + 1EB1A8D6C29D499095DD0DFD4EA1D548 /* FIRHeartbeatInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C522EA015D2014A62E44BF97E474F0 /* FIRHeartbeatInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1F0100C3D20FA338B398C5F78B1A0365 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = B42426476D12774187E98D5BFE4CE700 /* UIImage+GIF.m */; }; + 1F268AF886447A531E618BC7F9A26614 /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73E788E85BE2CDE5B0D40EB349965B88 /* ConstraintLayoutGuide+Extensions.swift */; }; + 1F34369311D9EDCFE9017ED352BC7D35 /* GULUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 430B0005A77A8131FDBFCC5F7AD421A8 /* GULUserDefaults.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1F66915498E564EE223A12626EF742F5 /* FIRCLSRecordBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B11721D9F870B79AD140FECD483E500 /* FIRCLSRecordBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F9F9E3335952F02EAB58C60A25ED6D6 /* GPBRootObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C818B870E913B7A4C4505E4B8B8C97 /* GPBRootObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1FADE665F64045E1D91389EB86CD0765 /* FirebaseCoreDiagnostics-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E801717D20A5DEA230B9BD043045FA27 /* FirebaseCoreDiagnostics-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FFC152F2C26C3DB23ABF93F8E213DC2 /* GPBUnknownFieldSet.h in Headers */ = {isa = PBXBuildFile; fileRef = DEF96F0A1A95E52441306AB6C23338AD /* GPBUnknownFieldSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2029127F2812E2FF3BEB03C348D7A816 /* FBLPromisePrivate.h in Copy . Private Headers */ = {isa = PBXBuildFile; fileRef = DCD26E805F619E9AFF00D6F8316EF5B0 /* FBLPromisePrivate.h */; }; + 204D11D4C5D094FF81A8E19F91F7632D /* GPBStruct.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = D211AAFCFE0A7CB70D07BF3AEC35C3C4 /* GPBStruct.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 204FE6DA5B38A26B953D0A986D22BB06 /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = AAC3EFCF175788B229E87D981F263D2E /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2060BB82E33F736340D4F3E16DC9314C /* FIRInstanceIDTokenDeleteOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E066341C04A8D0C0A9CD030AED82C4 /* FIRInstanceIDTokenDeleteOperation.m */; }; + 21CEBE70AD0FDA0ABFB25F96B56EF0DC /* FIRInstanceIDBackupExcludedPlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB53503593458B04A17C632B37F0018 /* FIRInstanceIDBackupExcludedPlist.m */; }; + 21EF6DBE43B5861503160D95BAC4C3C4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 220AE9037C7A893181CA182AB19457CC /* GTLRURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1DE698CAB850C5936A555528E63CEB /* GTLRURITemplate.m */; }; + 2250CC9397C0145D07A5B7B267D2782B /* GPBWrappers.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 83A53CC973BC8DD33C64A188AA2D79A2 /* GPBWrappers.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22A8219489AA23B46BFF4A098DD9223A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 22B873D35CB57E594EBBEFB27628FD9C /* FIRInstallations.h in Headers */ = {isa = PBXBuildFile; fileRef = D9AD27700FFD6A40E3C40164DA2D3568 /* FIRInstallations.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 236BCF6FF6D5CEEF27D55DF23C578B49 /* FIRCLSReport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DBD503B7B689F3BCF4D633D23E769013 /* FIRCLSReport_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 23986D7E138F668BDE449DD6749DA08A /* FBLPromise+Race.m in Sources */ = {isa = PBXBuildFile; fileRef = 76C9705A0AE5E2DFEFFD632D7D2FCE82 /* FBLPromise+Race.m */; }; + 24155DAD15E2E055B0DD797021E0274D /* FIRAnalyticsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FFBF5D62B05098AF9222782F4EB7DD3 /* FIRAnalyticsConfiguration.m */; }; + 24462135B91211810CEA8D51CD00B255 /* FIRCLSThreadArrayOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9920F57376A5FF561CECB1A08A49D37F /* FIRCLSThreadArrayOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24549C7B22EEEB9FE6874E6C83E6548B /* FIRInstanceIDTokenInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 378EDDB11C3AA3A9CD84E4ED1E9F1436 /* FIRInstanceIDTokenInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 249281A863DDBA3E28AA83127A59649A /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F668B38444CB840584F0F6793CCC9783 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 24FA3E5707E40394740B7501CC3CC801 /* PromisesObjC-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CE6FDABE8FDA433D3FB4B48BDF4E818 /* PromisesObjC-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 26787381BD974F5B9D9F4406F6A440A3 /* GDTCOREvent_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 59960483DE4BD69A47EA24EDA93B2600 /* GDTCOREvent_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 267ECB4EE1FF237B850355F58E8F61BE /* FIRCLSProfiling.h in Headers */ = {isa = PBXBuildFile; fileRef = FFDC670F97F91FE9EA4D985EB6804715 /* FIRCLSProfiling.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 268153EBDC291FF50FF99E76D8463A43 /* FIRCLSDwarfUnwind.c in Sources */ = {isa = PBXBuildFile; fileRef = A2C53131DF268AFF123BBF305BA6EADF /* FIRCLSDwarfUnwind.c */; }; + 275885418CAA9F1AC36DC72FCFBDB9C6 /* FIRStackFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 80BC9C2ECD98407F0B7D9116BFFE6CF0 /* FIRStackFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27CACD40F2CAF99170DC8B3C04FEC05D /* FIRCLSMachOBinary.h in Headers */ = {isa = PBXBuildFile; fileRef = 72F184F00A89B6892E8A35C5F752FB99 /* FIRCLSMachOBinary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27F978660A33E723F2DC495CDD05A079 /* GoogleUtilities-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 64F9AD058765F0A1CA4FF9A0E92AA138 /* GoogleUtilities-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27FF8E694BC1A1772568E5A458C50EF5 /* FIRCLSDwarfExpressionMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 5148106E51E14CDF6F45C39224BC5E97 /* FIRCLSDwarfExpressionMachine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28D1B3462379B6B830A6CED4029598A8 /* Struct.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 790FCAB3E311D1BC85E59B8041D34027 /* Struct.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 28DE317E7FB256C2625BAB78F0F52ADC /* FIRCLSCompactUnwind_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E5C3202E468FAC0374262B50DB0CEE0D /* FIRCLSCompactUnwind_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28FF2DD2E26316CA3F053BEA685AD6A1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AAAC4E1CEA86B11DFFC6B6267516883 /* UIKit.framework */; }; + 298EC52E13D924BF14F9EF9C3A2A19F9 /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 66C3CC76B8449C2B32F2B349CC265AF3 /* FIRComponentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 299DF81447D6EA945E7CF8B0D9A20958 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDBC5364C79661CE791B40872C3CF379 /* SystemConfiguration.framework */; }; + 29AD5BB53E3CC67F9C1459D45F28E9F5 /* GDTCORTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = F86913BE9E5990C8A247454C6FD92952 /* GDTCORTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29DF5BD3A192706AFA91258F47A9390C /* FIRCLSUnwind.h in Headers */ = {isa = PBXBuildFile; fileRef = F2C2B649E995CFB460ADE39730713BF7 /* FIRCLSUnwind.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A2C42EB29985AA9FAF9B780901729C7 /* FIRCLSInternalReport.m in Sources */ = {isa = PBXBuildFile; fileRef = C07B2347F3B80C6128934E4FBC27024B /* FIRCLSInternalReport.m */; }; + 2A91120E25BC365C4CFED26AAB4392D0 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BC3AA083FC71A68E475020560D4CCA1 /* ConstraintConstantTarget.swift */; }; + 2AA7C84FA3B943E1B8338DA7E3E08299 /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99FCE997354E582E71C1CEE6E969FFD8 /* ConstraintMakerExtendable.swift */; }; + 2AC455831F3DCCE2C616433DDC6B93C8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 2B0B79CB4714D27DC38C10C69EACE107 /* FIRInstanceID+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 27E5D866472ED3B2F5BD84463F962454 /* FIRInstanceID+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2BCF7176A112FF6F756A1D7BAFB824D8 /* BannerColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5688D84FDA31D39123C186C9498247AA /* BannerColors.swift */; }; + 2BF6FBC0A64BF107C5D64C61F1397770 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E72CF57FB522BD8CD0392B10511DF1E2 /* SwiftyJSON-dummy.m */; }; + 2C1E6D77213F75BEE7F23DB106C9C5DC /* FIRCLSUnwind_x86.c in Sources */ = {isa = PBXBuildFile; fileRef = 4913B9003CC22147836EBC82EC7E98A3 /* FIRCLSUnwind_x86.c */; }; + 2C55FBF27252FFC62355D427AAD554BD /* FIRCrashlytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C22B4D65CC94009F43381DF758DB7C /* FIRCrashlytics.m */; }; + 2C61B040BA6A9A7AE66C4D9BA26D5520 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A7B786B88FC47C56B14154A91926FFB /* SessionDelegate.swift */; }; + 2C8CC324B58065259B326D0BC5AAEEF8 /* FIRCLSFCRAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 2587D08AE0016E860519C5FD3D686FAC /* FIRCLSFCRAnalytics.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2CBC9262A9FF96B6600DB28320A4FC25 /* FIRInstallationsErrorUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 97DE476864BDD426BDB377F4B66C5BAF /* FIRInstallationsErrorUtil.m */; }; + 2CD5C001BD61432D4374DBCE9337674F /* FIRCLSDownloadAndSaveSettingsOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76024C0AAD301092B3FBE1E329F758 /* FIRCLSDownloadAndSaveSettingsOperation.m */; }; + 2CD7B12267D2B7671C37DA405AA567D0 /* GULLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = DBC52A9CA0891ED6E4C219182CD35BAA /* GULLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2CE736E6BAD133A6C1799C508AFA8F37 /* GULSceneDelegateSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = C16C9A398024A0F0FEE442411FA99832 /* GULSceneDelegateSwizzler.m */; }; + 2D13AB66FA9DE1D3C7AF4687671C0684 /* FIRCLSFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 269C194EB9A20E615E29BB75D5C7D527 /* FIRCLSFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2DA533FF3FB8BF229952BC4F2D65CDAB /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 42EF23EDB16F9ADFD52166DD280B7642 /* GTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DB671C735AF7060E0B883EDBEB71B20 /* GULNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = E1493227AE7C34FD02E174319B19B6A4 /* GULNSData+zlib.m */; }; + 2E1CBB85278DF58900EB92B98341CC37 /* GULAppDelegateSwizzler_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C4B0E1C9DC68D3AFB51CDB5A332B408 /* GULAppDelegateSwizzler_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2E1F42253DC15A352F99DEC9C0FF8B3C /* FIRCLSDemangleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D594AD094BC677312545ACF74D5C97A6 /* FIRCLSDemangleOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2E5F6CC9ECE4CF19AD07E88125144F17 /* FBLPromise+All.h in Headers */ = {isa = PBXBuildFile; fileRef = B2D4CB67FC8B41EE8F0248D7B8FB8DAF /* FBLPromise+All.h */; }; + 2E674B738A772DA0E336F3103D5174C0 /* FIRCLSRecordApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = B0F874152100C9D34034BE05287011BF /* FIRCLSRecordApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2E86341B0DDD16517B40BE446D11F7C0 /* GDTCORTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 212F6B35EBC2A6D01955AAA719934409 /* GDTCORTransformer.m */; }; + 2E8F11B81FEA854FCD2D9026A44C26EB /* FIRCLSUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = D1C17D6BCCE0FD1190FE02412BE42487 /* FIRCLSUtility.m */; }; + 2EBC787AA6EC9FFF8F0550EDB8823846 /* GPBCodedOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 97CFFF6A97FDDDCF911E92AF03B9AB3F /* GPBCodedOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EE9FC3AA23B7780270BD8D7AAC3D364 /* GTLRUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = ABB21CC643DC3204C973D9E0BA2619DD /* GTLRUtilities.m */; }; + 2FADA7115AEFDCC59593DD4201572539 /* CosmosLayers.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D1E1875CE4F9426544E6F7895B152B /* CosmosLayers.swift */; }; + 2FEAEFD59915D693EE3374E161504092 /* nanopb-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C98D7214A49530C0A0780FEC6B8E10A9 /* nanopb-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 300D3D8B912DB279CA3CF73EAD50DEE4 /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 31BB25B787D0551ACC3F03F11E85288A /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 304B78A95EEEF66A1C73129D8ED599AA /* FIRIMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E1643B5E027E1FF9B66796A6D7C5FF0 /* FIRIMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3111980A4A1209A214F87FC453A09B35 /* FIRComponentContainerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FD96061CC20B830F6CE26A7F76EB1B9C /* FIRComponentContainerInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31E4BB41AC9A35A473793615A1A42C41 /* FIRCLSSettingsOnboardingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BAA40DF9933556D33FA504ED4600304 /* FIRCLSSettingsOnboardingManager.m */; }; + 321D2BC8625C97F7EF3AF647B2370E59 /* GULLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = C40BDFE3ABF169C2869E2DB9150C2E83 /* GULLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 325BA69A1881ED0F610714A630739449 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 32F2EC043B60A54A07F310BE68EAA0F0 /* GDTCCTNanopbHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 130A17D803FEA65ADC300A190331B88B /* GDTCCTNanopbHelpers.m */; }; + 32FB52A492FD7BC12D9C81F24A666483 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAB1166009894524FAE7A7EA35EA50C0 /* IQBarButtonItem.swift */; }; + 330DA634EB85DB4EAE9371494F1FB8E4 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ADFA7B0C3C0CB5AF238AF905E72B29 /* IQPreviousNextView.swift */; }; + 3322B36F38A399ABFF2A6A76BDFF47F9 /* Pods-FoodScan-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BC53663530C402033E24E3E2C37349 /* Pods-FoodScan-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 34701A227A5E24978E7E7CDD8416B58A /* GULLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 792A088BBC14897EF8C671CEB7D926FC /* GULLogger.m */; }; + 350A4485696B39AF1DD1BB115B558CA8 /* FIRCLSURLSession_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 223FB65C2ACDF523FD2D86058DD9D428 /* FIRCLSURLSession_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35307066DE64A25E3ABD76EBC535A52D /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 552B7FB1A0E6BC43BF15DF2694D9243B /* ConstraintAttributes.swift */; }; + 3571F958A3907B3A806E62D50C2550D4 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B6BCC08D77624EBE7D24B455B0F45D7 /* NetworkReachabilityManager.swift */; }; + 361B77EA491A6D2EA9053D734B8FA5BA /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = C68A7A29F011511E60A7A11E9C400E2E /* IQNSArray+Sort.swift */; }; + 36D940EC947D91363C7DC908EB4B0DDE /* tflite_lstm_recognizer_latin_0.3.conv_model in Resources */ = {isa = PBXBuildFile; fileRef = 05943823E3A2C03711307DF590F14FA5 /* tflite_lstm_recognizer_latin_0.3.conv_model */; }; + 36E0379A8E3694A90339F98340F57106 /* FBLPromise+Async.m in Sources */ = {isa = PBXBuildFile; fileRef = 825120C5B708819A5E8CA6FEB03EA54D /* FBLPromise+Async.m */; }; + 37F63143546DAE1AF3D50D42AF6B7812 /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 98ADA7DB12BFD493283AD661F37FA722 /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3820C62ADC78D113C4F6F9F684F49FAF /* GDTCORFlatFileStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 80B23A6B5299A4B5F64391FFA406BB84 /* GDTCORFlatFileStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 382B8C71B2CDCE358FADD3B6A689C9C6 /* GDTCORConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA169B0A4D3D1C2FEEAA3AE66334C3 /* GDTCORConsoleLogger.m */; }; + 386C203C52E064767CF92089D4C94844 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 38A1B959D32E0581957BC348DC4ED3EF /* FBLPromise+Always.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 2B3391BB00CBE605D3C345A721C9E149 /* FBLPromise+Always.h */; }; + 38F15168BC4B9889FC4ECA28E8F039E5 /* Popover.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1989B68DD23DE1903315884F1105D5F0 /* Popover.swift */; }; + 394FA64A6725161CF93806AF3B134844 /* FIRInstanceID+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = E0CA20C4BF19FEE4415BAB65031ED0F1 /* FIRInstanceID+Private.m */; }; + 3A7FC734EC2C4A129B6B4F4157901CE8 /* FIRInstanceIDAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AD2CEDB0543C947682706ABB1061C8B /* FIRInstanceIDAuthService.m */; }; + 3AA8CB461AA7A5B74FFD3E4FC8F9B644 /* FIRInstanceIDCheckinStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E6A94E353ECC6C305C6F9531503CC0 /* FIRInstanceIDCheckinStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3ABDABBA9DED4143B735540EF8800CDE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 3B24C0260EDACE7F1BBFACABBBEEF372 /* GTLRVisionObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 4937363A943B257FBB42CAB737C03234 /* GTLRVisionObjects.m */; }; + 3B80EADA75415870518B23464AA89E38 /* GDTCORLifecycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E669E024A9C324703E103045EB5ADE /* GDTCORLifecycle.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B9B4E370E9E140BA7CB0EFE103F4BC7 /* FIRCLSRecordIdentity.m in Sources */ = {isa = PBXBuildFile; fileRef = 554B5690E9B1405038212A4EEF541D12 /* FIRCLSRecordIdentity.m */; }; + 3BDB17A9280F7E7376EA5FC82D2D9600 /* GTMReadMonitorInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = EF5ECBC562B1FDF4618625BAC4A94EA9 /* GTMReadMonitorInputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BDEE69A7FEFB9173FAD201357965F94 /* FIRCLSFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CBADFAA802739BC1494D54D633397B2 /* FIRCLSFeatures.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3C2E6ADD50B51D9598B6DA9C6C39E439 /* GPBCodedOutputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 27742BA112387B2A8234BCB4938176C2 /* GPBCodedOutputStream.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3C5558ED6C739F4EDEF8B4311F657FDD /* FIRInstallationsItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 3194F4D4194CDD2B9BCC4A4D19BE80FE /* FIRInstallationsItem.m */; }; + 3D2004F9D004B29A53650F9BAB942823 /* GPBWellKnownTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = BDD6052C6B0D6447C8A789F014A4CC18 /* GPBWellKnownTypes.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3D51B70ED55B22FEFFD7E25C1E1368F0 /* GPBDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 7580A9D865A2536FFB64A80053AD87FF /* GPBDictionary.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D8F4CAD883144A11EF538ABAFEA264F /* GDTCOREventDataObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BBFEC177A6E3D6C2C760B3B3E80AEC49 /* GDTCOREventDataObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3DD1D7373E803DEF58DBF52021E28D65 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = D81DA9BEA08FB5F6384AD27158E26032 /* ConstraintInsetTarget.swift */; }; + 3DFA43660BFA2C4CD27C1BF7834AA5C1 /* FBLPromise+Catch.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 7F48CD4A675CEB1A55561E2A3439B214 /* FBLPromise+Catch.h */; }; + 3E7BDB28009480D61D3756DAF652BB34 /* FBLPromise+All.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = B2D4CB67FC8B41EE8F0248D7B8FB8DAF /* FBLPromise+All.h */; }; + 3EC26A1EDA7ABCFB1F11BC78460BBA64 /* GDTCCTCompressionHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = D0314071DC5A55E04EF4E1982F56667E /* GDTCCTCompressionHelper.m */; }; + 3EC52C8A6BABE4066E466519E31C3E03 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B9BA538EF0A675F87DA279DE2865ED04 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3F491934B6316866A5CE921DDB87C6C5 /* GPBArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 506AA04DA7BEFEDC7BD8E42B7E622C1B /* GPBArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3F5744B5A50ED0E541B2D56C4B3DEA0B /* GULNetworkConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B099F2879DF5A05B13BFD58E7708F83 /* GULNetworkConstants.m */; }; + 3F9535DEBB385A0E25267B71FBD8BCE6 /* FIRBundleUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 39A2A2DE78B5E5FFF0A4E9D0CCD8F62A /* FIRBundleUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3FCCEE497ED1CBF65E9FEDB0B4C9DA5A /* GDTCORConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE5EEA27261B1375AE3BDD541EE1254 /* GDTCORConsoleLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 40567B104BF4691902F2EF677D699112 /* GPBDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C4659E4DFE14EF5F9A7DBF5C11DA3E /* GPBDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 409DA22F20866C6C4FE7201147903602 /* FIRCLSInstallIdentifierModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 278D5750B9CBED512AF239D1476A756B /* FIRCLSInstallIdentifierModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 41784AA582810BFF657E52253D23FCE8 /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = DCA08CD7DFA01DBE6E9601B6C3F0B849 /* FIRLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4191877AC1736CC459FC11EF8E61FED3 /* FIRCLSSymbolResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = B00DA36C3E33D5F38AE88D21583D8A3E /* FIRCLSSymbolResolver.m */; }; + 41E5B21F4758B2411A95A7C72523536D /* CosmosView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86EDFC728B0F8D056ACAD5D22ECAE3E /* CosmosView.swift */; }; + 41FDA0DC71D02D2EE744D9ADC9413138 /* Duration.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E25D0CF315E9E68A8EE102CF8C97396 /* Duration.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4221AB8F56B1444AE176F2B13F81C557 /* StarLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC5098685A6600BEC3D9AD5DB82CD7AB /* StarLayer.swift */; }; + 422AFCB7FC0B311182A38433A186F5C3 /* pb_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E139283E7181753A9ACB0A04829085D /* pb_common.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4249588098FA829337E695AA92BB0661 /* FBLPromise+Reduce.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = DB2BB8C1E60087FB89C2D8281A9EEE25 /* FBLPromise+Reduce.h */; }; + 4284F3E05A572D3CD533F52E24DF7F65 /* FIRStackFrame_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB985871DC4392ACC50F4BC00B00CCB /* FIRStackFrame_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 431B2331FFB67F4673B2923EEDD71103 /* GDTCCTUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = FF68EE9F1710002EA3C64F514C95AFE9 /* GDTCCTUploader.m */; }; + 434A994A1A9C77DADC11D4A3DCA4BB91 /* FIRInteropParameterNames.h in Headers */ = {isa = PBXBuildFile; fileRef = CBBC58456FD12B9C80B77E30FC1E815D /* FIRInteropParameterNames.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4402F35675D477FCAF0EF2DB9EE165B4 /* GPBFieldMask.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 534FACE0151E3D0C4F27850D9FDA809E /* GPBFieldMask.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4404A9C8152865C62A5B59B88640811C /* CosmosSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 806DC306FF3D82DFDD67AB7C0E5A41D7 /* CosmosSize.swift */; }; + 44C0D8267A09E4D12325986080496F66 /* GPBApi.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7B070ADB703623F667CE7828F17626 /* GPBApi.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44DDFCD7F5FA4268B33081A8EE8846FB /* GDTCORTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 386A8E0809348AA528207E8FB76EAF7B /* GDTCORTransport.m */; }; + 464450D037D17ED5EE2322E180A6A9F5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 46D12956A20717723EF722E2F5861BFE /* UILoadControl-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 29FBB33EF4657BDD997B0A3BA208E37D /* UILoadControl-dummy.m */; }; + 4700FFC8A8DF084E47E31E904454F462 /* FIRCLSBinaryImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D9A539737789CC4F66872C0A8D9973B /* FIRCLSBinaryImage.m */; }; + 474BD176D99232B052652223E9CE4BDB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 4771D5EB98016E49C166EF50F17E86AF /* FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 26C9CCCA375602E478F0284F850A81E8 /* FIRInstanceID.m */; }; + 47BF943A340B66C5FD02615D84FE0375 /* FIRAppAssociationRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C37E7FC5903950C698066DC99ACE8E1 /* FIRAppAssociationRegistration.m */; }; + 47CA2A7970780210D0512B852052A1C5 /* GoogleDataTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C78533F1F45D2DD5B6C6E6B62678F6 /* GoogleDataTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 47DACD12C62D66F8385202451D7A30FA /* FIRCLSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AFCB4CB497206301B135794487A4F3A /* FIRCLSLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48118F2BBBBED5CDB99490669657EA32 /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = D2D06725A29631194EF95F87DB852FF3 /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 48AB7B416F04346D541C668DE838386A /* FIRInstallationsHTTPError.h in Headers */ = {isa = PBXBuildFile; fileRef = 04B8266C7733E1BFF98208265854DE17 /* FIRInstallationsHTTPError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48E510C5E35E2D12CEB066A5465085EC /* FirebaseCoreInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C0A2A1D0F08D86E105EDC46654F0046 /* FirebaseCoreInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49CA49EA26ECDC52606A0ED7B547D834 /* FIRCLSApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 24C066E48B587792E50A996B197E5BFA /* FIRCLSApplication.m */; }; + 4A2DC1B4EE512F75854167D9D4BBFA7E /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = F6BC1647CFCDEF84F23D2829ED9815D6 /* FIRErrors.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4AA4B1F4954B83D3B08341F97A818A70 /* BannerStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4B5C744CDABC8A69C37AEF69D393C69 /* BannerStyle.swift */; }; + 4AA8A65DEAA36567A952A4CE55933845 /* GULReachabilityMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = D29555AB3A177AA112364A787BD17DC0 /* GULReachabilityMessageCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4AF827A1D0F1B1839B2D8B052FA1109C /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = AF69B17357D0B60659AAA0BCBD6C18B9 /* FIRLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4B09F047F53B913C31BA6CD2209456E3 /* pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 688A171F40FB62D45AD64B0C1C9E7394 /* pb.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4B4344D96645C0F9994DDF9487CB9D78 /* FIRInstallationsAuthTokenResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = E983CD6F7A6DBB1038852CD5552A0B30 /* FIRInstallationsAuthTokenResultInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4B4AD435A9EE19886E4C62760BAD63B8 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = F021AD5A740ADB4A289B409D92D0C745 /* SDWebImageCompat.m */; }; + 4B56CE19DFC1E0148C8D3F932751A849 /* FIRCLSURLSessionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A63B1DE3B7B037345A19741FAEBA60 /* FIRCLSURLSessionTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4BAFAB35D54C28F41E6BA9A4A87152D3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 4C66A9419515F1335398F039D4DAFF44 /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EF35F5EFBD3264FD3B07F711A150627 /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CDE7D3FFF484D034AC659F9ABA90514 /* FBLPromise+Validate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8711D439E388C79B95080F5203C3691E /* FBLPromise+Validate.m */; }; + 4D56D0D8F847EA3E92F5A22266E0D2F1 /* GDTCOREvent+GDTCCTSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 548FA4DCF5A4AED70F8105AD0E573CC1 /* GDTCOREvent+GDTCCTSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DB184232BDF1391528CE0CFEB1314F4 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 595A00EBEEAEE7EBE765D7677320BC81 /* Constraint.swift */; }; + 4E1EF3ED84E9AC863429156B3DEFF0DD /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B784A277FD94DD76E5D20A6BC981A09 /* GTLRBatchQuery.m */; }; + 4E2DBAEE04D08F637A134D6AEA406544 /* FBLPromise+Catch.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F48CD4A675CEB1A55561E2A3439B214 /* FBLPromise+Catch.h */; }; + 4E8110EFB424A91C4D0AD2D8C9D26360 /* FIRCLSByteUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 1256F0F46F7145F1D3A9033ABDEDCE38 /* FIRCLSByteUtility.m */; }; + 4E9E84C07445FB6D6B88489016DDCA7A /* GDTCORClock.m in Sources */ = {isa = PBXBuildFile; fileRef = D308D3D540FF8A98BA5F1DD51462710F /* GDTCORClock.m */; }; + 4EA0B355E189B62A681F1BA1289CAFDF /* FIRInstallationsStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 95F2C2DEDF23157DD4BAC75EB7007BC8 /* FIRInstallationsStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4EA4C214AE8EAB184625E3A930B519EA /* FBLPromise+Timeout.h in Headers */ = {isa = PBXBuildFile; fileRef = DC16E4F27681F35EEDF46A2DFA567022 /* FBLPromise+Timeout.h */; }; + 4EE60330F3867EC5799F5445A9242F5F /* FIRCLSRecordHost.m in Sources */ = {isa = PBXBuildFile; fileRef = 105BA024A49B3F6E5E2F5FED4A2777AD /* FIRCLSRecordHost.m */; }; + 4F1AD02E027BB1391F12C891C04CBF1E /* FIRCLSInternalLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = A415084EDFBDD627D2E93D944178CD64 /* FIRCLSInternalLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5012F154717CDDA0E1BBD71F438D1AC7 /* FBLPromises.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 981BA27C443D0904CCD78DC91BB6BF4C /* FBLPromises.h */; }; + 50610569C8916D516CC73F63950CCB84 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = AB0AFF6ACF73131B19D9A1636B66B5F0 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5072592A5517CB21463532EFF2732E4D /* FIRCoreDiagnosticsData.h in Headers */ = {isa = PBXBuildFile; fileRef = DB2BFA70F9D2B2046A1D26799BD9C725 /* FIRCoreDiagnosticsData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 510E404D41BEC8DF78F85A7DDE7B56E1 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 5613B88756D0E546B20AAAD9CC2F6DD1 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 51D1C1F8E6ADAA879B5F5213EE82F815 /* GULReachabilityChecker+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = C3D175FAC843230B40804C9AABC78F2C /* GULReachabilityChecker+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 521AD1329887CB8273DF9131F7333624 /* SDWebImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = CBE3CFC948CA8A3DC3AA8A6EDD12B777 /* SDWebImageCoderHelper.m */; }; + 525B33535E653CA9F97CEC22B94949E8 /* FIRInstallations.m in Sources */ = {isa = PBXBuildFile; fileRef = 6933569E8134990F05D89398BE58063C /* FIRInstallations.m */; }; + 52EEF7A24E458093E38CD21F63DB5398 /* GDTCCTCompressionHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = D0E8AB74A897C27C52DFCE4991212079 /* GDTCCTCompressionHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 53053E6349DD9D4D31071F38E392BF59 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ABED19E78AA6ED81CFC8C4FDD08F15C /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 534D1F1F2179623DB69452A1880382A0 /* tflite_lstm_recognizer_latin_0.3.lstm_model in Resources */ = {isa = PBXBuildFile; fileRef = B8F366E4FDAB5177B2984C747EABC315 /* tflite_lstm_recognizer_latin_0.3.lstm_model */; }; + 5372F88BBC2DE83D0C48522EC697F2EA /* FIRCLSMachOBinary.m in Sources */ = {isa = PBXBuildFile; fileRef = E7369BEBFDA8591DEEB97B85CCA96213 /* FIRCLSMachOBinary.m */; }; + 53791F5E5F07400F92CFDFC89A432305 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC17FF10FD8AE0BFCAC15B17FBE1457 /* Validation.swift */; }; + 53BD537AC1049761C500810FE3738F39 /* pb_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 6434285884CCC1C8C1198696EBAA760B /* pb_encode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; + 53E7EF3636402FA4FB068C376A9A2F6D /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A15759568DD9077D5819E87E23463B1 /* UILayoutSupport+Extensions.swift */; }; + 5415CEA521D1519DBB8564AC6517824C /* FIRCLSHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 68256CE18A61E0EC5F9BBE995BD72AD5 /* FIRCLSHandler.m */; }; + 545A75E3EEACE311E80B97663712095C /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C8282674C2FF7CED5AAC2D694564F791 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 546A53175202A6A71AFEC07250C8D859 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8730D0545872B4BD2DDE842BC90B3954 /* ConstraintDescription.swift */; }; + 54787ECEB2C94741353C0880FAC97470 /* FBLPromise+Then.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 5B13E96214788D7026649E291319901F /* FBLPromise+Then.h */; }; + 5497B9799D27C289858F919164D6ABC7 /* FBLPromise+Always.m in Sources */ = {isa = PBXBuildFile; fileRef = 6343586AEAB345ABBEFC1C0F02074DA6 /* FBLPromise+Always.m */; }; + 54983E94AB81FE1A434164C157185B61 /* FIRCLSURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CC26984BC5A8059EF2B66552655E014 /* FIRCLSURLSession.m */; }; + 54A6251D613CD67B72706473381C0531 /* FirebaseInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = E9B908472FE2E8E544F3434D3EC0B3B2 /* FirebaseInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 54B2F6ACB9382E963AEB39BDEECE8E29 /* FIRCLSConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C3964BB83A9C89ACDCBC4EF2A78963 /* FIRCLSConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54FA0F4229DC944D98EC44C26070BA53 /* FIRInstanceIDDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = CF0F1360C0B548EE1F3556785DBA7E01 /* FIRInstanceIDDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54FEFB469F111C1661324300B4D51B4B /* GPBUtilities_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C3580B678F83A04686BACEE5150E770 /* GPBUtilities_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 551E99BC10F7CDC9BC88F87F781671E9 /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E65AF6DDB5E842F9E17608A00D308A4 /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 556EA2BE9668C9E20A16A7FF4288C398 /* FIRCLSUUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 289D475971DCFA92C61D9AC883992DC2 /* FIRCLSUUID.m */; }; + 56143FD3EBDA10D1E7F2DCB3E76B5B6E /* GTLRVisionQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D48E4F3BC2703AD574E410736B763CC3 /* GTLRVisionQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56D1F45C59B39EBF49977AF74C48A79C /* GULNetworkMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 960F38F4C2770022D9FC931ABC7D8AFD /* GULNetworkMessageCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 56FD6D612C8B6B8FF79C0AE8B8772366 /* GPBCodedInputStream_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F092267703387DA58E11466115123BD5 /* GPBCodedInputStream_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 57357502ABADCA40C35B742F0E76AC88 /* GDTCORPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = F2F671EF359514344110E1A6C6513F5D /* GDTCORPlatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 57BB72BE7454108FB494CDDA72E1C8E1 /* FBLPromiseError.h in Headers */ = {isa = PBXBuildFile; fileRef = 810EA27159569FC56E8E1D02AA63AAA9 /* FBLPromiseError.h */; }; + 57EFD14577E9E111D2D6B61B1FB9FAF7 /* GTLRDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B6E87D50DC66F7B147479B13A291F13 /* GTLRDateTime.m */; }; + 585C9B579AC2DD56AC8B2D51341EAF93 /* FIRCLSFABAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E5C6A20E82F32854C91A9CBABF873D3 /* FIRCLSFABAsyncOperation.m */; }; + 58966E19EC83CE24529CDEDCCC60B9FE /* FIRCLSFABHost.m in Sources */ = {isa = PBXBuildFile; fileRef = 6280C7ED15DAA3A5E0E3038D367CBCF6 /* FIRCLSFABHost.m */; }; + 58BE8FD91BFFD2ABE4B27060BB4C28EE /* FIRExceptionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B007BDC6B4A7BEBDDEFFE9B7EC5817E /* FIRExceptionModel.m */; }; + 5A0E68DEDE122C476AFD5208629C0894 /* FieldMask.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 60C1E5AC57C38CF63AAF96DCAECB0FBB /* FieldMask.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A186BD2B524F1E9EE67C4C8FCA4B3BE /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = F10A01C368ACAD36B7BAE12E008E1DC5 /* GTMNSString+URLArguments.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5AA39ABD533D51F246A2FD9B2C55CE43 /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = DE676C20BA5E8E2F0645FD42523B4125 /* FIRLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5AC14B4F779334AC7F2530BACBC87B26 /* GPBExtensionInternals.h in Headers */ = {isa = PBXBuildFile; fileRef = C1752DBA39F3F80A32F8B041CB1EEAE8 /* GPBExtensionInternals.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B95A15BFFC18A744BC1BA25672A7D5D /* pb_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = 239E37FFD903E487676ACF03D36562BE /* pb_encode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BAC3C57008EC96DC87B11EC73EBA062 /* FIRInstanceIDCheckinPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = FBB15BAECDA92DF1BDA47EDE53A6E736 /* FIRInstanceIDCheckinPreferences.m */; }; + 5BB4975550854EBEC1CCE501D9CA5CF6 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1476393CB7CEAA1C2BCBE7EA578D20D /* ConstraintMakerRelatable.swift */; }; + 5C7B76FBAD8574062F60041B012FE052 /* CosmosTouchTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFA982327ACFB64AD0CA803FCC2C468A /* CosmosTouchTarget.swift */; }; + 5CBC4F7E99BDFCD1443493361409AEF3 /* FIRCLSDataCollectionToken.h in Headers */ = {isa = PBXBuildFile; fileRef = BE5E9CC51EAEBD9F4FF97CAA9CA30B49 /* FIRCLSDataCollectionToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D5C5C1630EEEC475390F6FA5D7178E3 /* FIRCLSCompactUnwind.c in Sources */ = {isa = PBXBuildFile; fileRef = DB8525A600833663569668515EE11E1F /* FIRCLSCompactUnwind.c */; }; + 5D71CF513C675B45B916C8B87995AEF4 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7B1EAA4A477F38205B2C733480E41E6 /* ConstraintViewDSL.swift */; }; + 5DF92ECA70BAB8579719793F32243195 /* FIRConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE9CC88ABF44A98E879106870CD16E3 /* FIRConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DFB77FDC8DA519B9022FDCF31C05DE8 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = 459A8171A5A32FF1BAC7F75F362C3C7A /* FIRDependency.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E1A0543905AB8FCAC0402AF11B81281 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 51EC6ACC97E7399DB23C696642311F5A /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E5210DF5BAF4C9BAAEDA76F33448E26 /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A647508E407F13524D71D613C5A122 /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5EB77D9C9687BF67CE7B4B5B8A2BCBA8 /* FIRExceptionModel_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5479E8B6F66D7587404812B975B944EC /* FIRExceptionModel_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5EEC93E3D577E2C5813BA8C23C886320 /* GDTCORReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F92C0BD929D3D857C2249F06AC51AA4 /* GDTCORReachability.m */; }; + 5F15D198F4C8761D8183143C079DBAD5 /* FIRCLSReportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3930BA0584713EA0EAD66495BAF973A1 /* FIRCLSReportManager.m */; }; + 5F1C66A273B80FDC21DBBDED62DF13D0 /* FirebaseInstallations-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 79EF790BE57C881C259212AE4AD2508B /* FirebaseInstallations-dummy.m */; }; + 5F713AA0D3A798B1A8EADCD4D96508FB /* FIRInstallationsVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = CA48374AFE7501C00683F27FFDEF98FF /* FIRInstallationsVersion.m */; }; + 5F81FD5BA2C66F7F7CF30E6727EBFC0E /* FIRCLSDwarfUnwind.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC7EA4DA5E3DCC2BAE07A6FDE2F12B8 /* FIRCLSDwarfUnwind.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5FB1D0D1AF2CAC62D24247C13077617D /* FBLPromiseError.m in Sources */ = {isa = PBXBuildFile; fileRef = 30D5BD7B39C59BCDABB6364FA88BCE0F /* FBLPromiseError.m */; }; + 5FE9814EEEC06D2A57DCAC2F0BF3C236 /* GPBDuration.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = CD37B056601A30F417C746B6B01D818A /* GPBDuration.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 60117502124E198596AB760CBB7AE136 /* FIRCLSUnwind_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = 427BDB8835C2307A7E6443B23DE597FD /* FIRCLSUnwind_x86.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6032A7CBAC742DA858B124263D462D4A /* FIRLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A4E8F1C7D92C0DE6F138DFCF76B0FC /* FIRLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6080E6D330C02D4C415E9A486A4697E5 /* GPBWellKnownTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = EC3135574184F3D54A42A98CD5424777 /* GPBWellKnownTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 608E912DE53DBA2847D4D246B451B3A8 /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E04FDCF97C8F6B06C175EF69368F0E /* nanopb-dummy.m */; }; + 60B75FD53E4438231A831B4B2E8BCD82 /* FBLPromise+Wrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 338455B58D8A2AB9B4157537A4BD82F5 /* FBLPromise+Wrap.m */; }; + 6140A912F64CB409082B5D83CA257EF0 /* FIRInstallationsStoredItem.m in Sources */ = {isa = PBXBuildFile; fileRef = FB7B7D1AA9ECAD705F3D1103AC4DE86E /* FIRInstallationsStoredItem.m */; }; + 61857850A19756A357AD6696D42E69A4 /* RightToLeft.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8DF0433DA66F8B29FF166EE000D1A1E /* RightToLeft.swift */; }; + 618F398AE3BEFAECBF92691BE8570290 /* FBLPromisePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCD26E805F619E9AFF00D6F8316EF5B0 /* FBLPromisePrivate.h */; }; + 61928690D9610038562C943308CB2CFC /* GPBArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AE340ABA639D6EE62F2FEBBE010F3B2 /* GPBArray.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 619FFF19097FC0337638B69ACD9C7C01 /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = A3F1F807324C805FEAEE4C2A28A10115 /* GTMSessionFetcherService.m */; }; + 61B48C105AC22B7C3F268A924B999624 /* GPBRootObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BAC4CABE1F84DFDDD71393FF8B8EBF1 /* GPBRootObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61CD9819F204E980E7C7D387565CC8FA /* FIRInstanceIDTokenDeleteOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DAE3B29C3B2F6B15FBB9A702D5516B2 /* FIRInstanceIDTokenDeleteOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 620772EEA5200EFD2F3C5E3B20EC68FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 627EC3282CF56487E56DBC413747B637 /* FIRCLSReportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E39C7A0FB1F7E5F0F483ECDD00023D9 /* FIRCLSReportManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 629E16AD36F9806675D083DB9D9D6F37 /* FBLPromise+Recover.h in Headers */ = {isa = PBXBuildFile; fileRef = 3226018FD0846D35B866D592F403BF46 /* FBLPromise+Recover.h */; }; + 62FD8F655D8732B6031FB049E260BA1A /* FIRHeartbeatInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E89DBE92A982BFF6BFBA0712FB5F744F /* FIRHeartbeatInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 631CEACC421CF7F2B2AAA82783196C4F /* NotificationBannerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B86F07C36621AA59AC076729A888DA0C /* NotificationBannerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 63328A5052BB4500F7A68CC082FA883F /* FBLPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 506C307DB96C77F25F38513B80BBE1E4 /* FBLPromise.h */; }; + 637776F2C89EE906659348C3260BF2E9 /* FBLPromise+Race.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 63C6830F4CD02F7D0DB40621054CC1ED /* FBLPromise+Race.h */; }; + 63FCE932F1D388A0091486BD2057995D /* FIRCLSUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F46FB9EE0365C4B202C308F73C27F5C /* FIRCLSUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 643B1F64D6D7A23440850F797AE63A74 /* FIRCLSCompoundOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7193FF0595F3EE2D48FF0B9BC086C7 /* FIRCLSCompoundOperation.m */; }; + 647437594A0DBC26288F678162518794 /* GTLRErrorObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F4CA697BAFD1761A238586D41040E570 /* GTLRErrorObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 64744C911253C3E01461FAD7C935C8D7 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5ADFF44C0EF00E26C109DD0EB322106 /* Result.swift */; }; + 64CAA87B30539AAA3D19679221D7C43A /* FBLPromise+Async.h in Headers */ = {isa = PBXBuildFile; fileRef = E5BB360882D1E8097C2B99C4F7BAFD89 /* FBLPromise+Async.h */; }; + 64DE0A43F2CFA42108FD3A7FFF76E248 /* FIRCLSNetworkClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0771D69999D0D59011FD5D1D3A2ABBB0 /* FIRCLSNetworkClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 64E43854C41D4D0FEFC93D33FFB70B20 /* GPBApi.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 490F72E72EA878E6DB6941068AB2B34F /* GPBApi.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 65332E624BEBAC6BED2932B7A9B70F7E /* SDWebImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B987C7413496B790D285162F9AFFD1F /* SDWebImageFrame.m */; }; + 657FFF9B2178C7045030AC6DFA2B9E39 /* FIRCLSRecordBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 09817A6ABEBB85128F1DF8DF7D96854E /* FIRCLSRecordBase.m */; }; + 659C8116B942791ED8FB7E3448A6BAC4 /* FIRCLSMachOSlice.m in Sources */ = {isa = PBXBuildFile; fileRef = C6C7C141E0398ED5F9C02385BA5FB0EF /* FIRCLSMachOSlice.m */; }; + 65B03B1721A84A7C379481951A5F6C5F /* FIRCLSReport.h in Headers */ = {isa = PBXBuildFile; fileRef = 7585666B54299ABB6200E16BD8A407B5 /* FIRCLSReport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 668E409696873F2C5B72B658D2F70A55 /* GPBWireFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 29DAD260DB429958D5D76EA47AAF1922 /* GPBWireFormat.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 66C55F598883BB9E871ECFEFF5B3D11E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 6727807781F0C96179F8753058FE7EA2 /* FirebaseInstallations-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 67CBAA8EB35349300BACDFF658284AB0 /* FirebaseInstallations-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 67AA525907D232C5B8AC58EA2AF87390 /* FIRCLSGlobals.h in Headers */ = {isa = PBXBuildFile; fileRef = 4866B6084839E09191BAC6E96C8ECE28 /* FIRCLSGlobals.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67CDBA6DC882A6DFC90FEAFA21216A98 /* FIRCLSMachO.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FCC6B2B6A18D2B1C4AF6C4E9A9A1DF4 /* FIRCLSMachO.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67DB177FDEEE00EB467B8EF9CA3B9805 /* FIRCLSException.h in Headers */ = {isa = PBXBuildFile; fileRef = 665478380DA3CC04FD4F15E33C474936 /* FIRCLSException.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67E7CC98657717872D159DA4F0AC3110 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D0FD720B3EA629BB319385FBF8DC12 /* NSButton+WebCache.m */; }; + 6811F39290E7EBF9CAC49F339CD50CE1 /* FBLPromises.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A953132A3E543C9634E362AA09C1E6E /* FBLPromises.framework */; }; + 681342E5C18E296BF40684DDDC04D88B /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFB846CBA530270DD3C0167CC34CED4 /* IQUITextFieldView+Additions.swift */; }; + 681BC01E33E24CF16F6FA5AC228937F6 /* FBLPromise+All.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F6BA76D8F6D0E6233D4DBC94569CEA8 /* FBLPromise+All.m */; }; + 683069FC2207902F156FCB78A5BF4FC7 /* FIRInstallationsErrorUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C2703B96BBA49784D661D07D07EFE838 /* FIRInstallationsErrorUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 68678E66DC429B51B586465786D8923B /* FIRCLSOnboardingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2558C77AEC62D5BB6947D93801314E86 /* FIRCLSOnboardingOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 68E7C42923468D28D3A4AAD72DD036E3 /* FIRInstanceIDLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 34FF6746E3D4CCF13B64CD7533FB6F34 /* FIRInstanceIDLogger.m */; }; + 694F13307AE5C8B32626011FD2F6807A /* FBLPromise+Do.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9B396839D10A8ED82F9D975D557A05DC /* FBLPromise+Do.h */; }; + 695B69E72765B9BC713768C787A8AAE7 /* FIRAValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 052373579DC6B1FF399E4BF9E3BDEBEE /* FIRAValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 698BB58C43B736B20EBA66D4BED7E1C2 /* FIRInteropEventNames.h in Headers */ = {isa = PBXBuildFile; fileRef = C043DAFB27572B1584BBA1305968CA49 /* FIRInteropEventNames.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 699D91726C1F905C5D48668D39CA77C9 /* FIRCLSSerializeSymbolicatedFramesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4401FAB2F5CDA7A76F9D3DFCE253EEB1 /* FIRCLSSerializeSymbolicatedFramesOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69B69EDDAC99740EA6F74AA547ADA94E /* FIRInstanceIDTokenOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 852D0AFC96C04B2551BCDD628EB3354C /* FIRInstanceIDTokenOperation+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69CF075CE6A4EAACF25B0C6F86E29A9F /* FIRInstanceIDAPNSInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 211A1FF36E47056373DC5B02ADD65CAA /* FIRInstanceIDAPNSInfo.m */; }; + 69DD2898AD2A39988155F8426AC60BAF /* FIRInstallationsIIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 78B17A00672F9BF7F5929FDD7C32EBC3 /* FIRInstallationsIIDStore.m */; }; + 69E17823618D73503A9107DF4E91C39F /* GPBUnknownField_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = AD295C22A1C12132CE297FE036C8E804 /* GPBUnknownField_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F0C07D63C1C270A7679CC419F4EC42 /* GDTCORReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 134A1D5D0508074FBA514F7B8A3623C4 /* GDTCORReachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6A02E3C707A1A104DCDD85953BC8BDEC /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 494033EBF19E5FDACED10052E4AAD58D /* IQKeyboardManagerSwift-dummy.m */; }; + 6A0864EAB5DB76AC88D1EA40A2E9FB83 /* GTMSessionFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 67C91EA4590CB25FA62EEED6254B1509 /* GTMSessionFetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6A1F0458C2521D5AE8130CF000C581E7 /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD1435E5922F82C3CF870713CAA2A51 /* FIRComponentType.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6A4DA0F3D04D1D6959AEB6AC0FF30D3C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DD978D3E2D5E3DE19E4856ADF51782C /* CoreGraphics.framework */; }; + 6AC472E7953C193ED35753CDD2A38D2C /* GTMGatherInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 61489CD970C15DE531CC665FEA739FD8 /* GTMGatherInputStream.m */; }; + 6AE29611364C22E5A04E5D2168D414CF /* GTMSessionFetcher.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FADDF66918009AB6EF57D016455E3AC6 /* GTMSessionFetcher.framework */; }; + 6B57A88FE693631CA8B466DCAF54F004 /* GULApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 478E0CC6F061331C1F4728013EB08612 /* GULApplication.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6BD5F6BF29BBE8F49BFD4C562E058024 /* FIRCLSDataCollectionArbiter.m in Sources */ = {isa = PBXBuildFile; fileRef = 874ABFA13CB2F2DEA2E80CCDA7691BF2 /* FIRCLSDataCollectionArbiter.m */; }; + 6C290F9D79316F1161493C90F70CC584 /* FIRInstallationsLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E48C7D094D98245893E7F2378168AE2 /* FIRInstallationsLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C4189911CDEABF99074D652F1192651 /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 264E9AD7682249782A53637E3072949D /* ConstraintLayoutGuideDSL.swift */; }; + 6C88D04E107310AB3B270B45D437F02F /* FBLPromise+Recover.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 3226018FD0846D35B866D592F403BF46 /* FBLPromise+Recover.h */; }; + 6CA3ADBF9BE822A05AD91650CECE05C8 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E4A08143C05FB2285348129671C6295 /* UIImageView+WebCache.m */; }; + 6CF0349B0F99FEE53FAF68F4A07926A7 /* FIRCLSURLSessionUploadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = D73D2675D55996A9AD80AB7DEAEAF5B1 /* FIRCLSURLSessionUploadTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D1352D96272D17C4E8BE65CA129463E /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A846BB87F91F9F641940A12D49BE1BF8 /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6DCEE914A5ABF757BC892EFB1341F3F0 /* FIRInstallationsAuthTokenResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E2045D29D643A22259667AE936A60CF /* FIRInstallationsAuthTokenResult.m */; }; + 6DF72524BC92C834101579985318B7B0 /* FIRVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = F8D98E690A13704A526738272D44B4FA /* FIRVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6E16BDFA4FCA78EEBEFB942A038A9B79 /* GPBSourceContext.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 0976FAB7ECC626BD43CE29789AD5D879 /* GPBSourceContext.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6E575E3A013C6F95D33A8ACEBA239B62 /* GPBDuration.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = D4A6DA229D9EF8520D1070E7B3D5F583 /* GPBDuration.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6EA9592CD4E2019051756194BF6F3037 /* GTLRRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = C95B0565E06E039114FD8E7902FB3E92 /* GTLRRuntimeCommon.m */; }; + 6EFF083ACF5AF5126E7CDD2CB004D8A0 /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67D3F7AC315B6BE6E9F01300F7203EC1 /* ConstraintLayoutSupport.swift */; }; + 6F6F3576CC9FA481EFA3723EFF19BE10 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF9781B75895C4AF33976BD77281358 /* SDWebImagePrefetcher.m */; }; + 6F926DCBDF8229FEE3DC21373FC3F2F3 /* FIRInstallationsStoredAuthToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 63EECD34A42917661B9B236E26CBBF37 /* FIRInstallationsStoredAuthToken.m */; }; 6FAFC571ED512407980BC54D7D456DA7 /* Pods-FoodScanUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C4C5BF414C33A89EA4811B8795F46F7 /* Pods-FoodScanUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 70290DDF7B315FF0E6175576663C391B /* FBLPromise+Then.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D5990921AAC2DFFAA355B5F6D1CA41A /* FBLPromise+Then.h */; }; - 705EE32D04E017890B9E6FBB6EEF1239 /* FIRCLSNetworkResponseHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E1FE890549221386D156915EA82E179 /* FIRCLSNetworkResponseHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7099C25B55D00A15E78F003DEC73F04B /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7D9DAE98F6A05D6DEB7D4E62DD96FF7 /* ConstraintViewDSL.swift */; }; - 70BA1E072B04793C6FBBC87664613A1D /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = D18CA124D9017FEEA10DAAFDC857DF1D /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 70BE02AB7D87BA952406D342473E52BE /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 656CCD3D643167FD5EF9E7AD15E31F41 /* SDImageCacheConfig.m */; }; - 715E50A5ED229CAA1E2B96C56EB198DF /* NotificationBannerQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = F46454C95FB03CAD1BA706961BE72319 /* NotificationBannerQueue.swift */; }; - 724ABD76C98544C901B0AAAFB0602082 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 726EA34F616E306C63F83F2E9D68D3D6 /* GDTCORConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EFC228D5B2133241C33181151479827 /* GDTCORConsoleLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 74CA306CE2A130695D0D21490E366014 /* FIRLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D7DBD737973798A2F07D83B523D3876 /* FIRLoggerLevel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 74D80757B3B6138539EE9892889D06C6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E3D44D9B9B1992DF3B506E22E3A7FAB9 /* UIKit.framework */; }; - 752463662AEBA00F5E034F906AA34455 /* Wrappers.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ACE6A39F27F4B15138154B28D01832 /* Wrappers.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7664FD4F59A0C00866CBAE60B0A3AD64 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 76869689F7E595D0EDC681E23FE706F0 /* FIRCLSURLSessionTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 25E8DE32B6819C68165F985EB03710CD /* FIRCLSURLSessionTask.m */; }; - 76B66BAABAF9AB33993EAC4072F383C2 /* GPBExtensionInternals.h in Headers */ = {isa = PBXBuildFile; fileRef = CA29893DBA60A9ACB725A81BE180B8A4 /* GPBExtensionInternals.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76CA0BA5372C2EF79F313DA0843F50B9 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 319C7914F0943C339C779DE2644681C9 /* ConstraintMakerRelatable.swift */; }; - 76EF12A9FE3BC2D5E1FFF0B71B09DCE8 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A09C23D7321E7D9D147858565DC301B /* FIRInstanceIDCheckinPreferences_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77056A25990BB2C0224F5B731DBE9C21 /* GTMSessionFetcherService.h in Headers */ = {isa = PBXBuildFile; fileRef = E0CDA8B0C54AF79F72989D91CAC407BD /* GTMSessionFetcherService.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7738893BE87C5E15710AD4857D03BBA7 /* Any.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E17171112D417F262F8402CFAC4E287 /* Any.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 773DF2AB97AEC4AD655927F81C5CC79C /* Timestamp.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DC483A2F12669CF56691C51CA34BE17 /* Timestamp.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 775F9BA89366D5622A12264F25E9AB78 /* GoogleUtilities-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2792E2BE386657EA1DBC95819B8030F7 /* GoogleUtilities-dummy.m */; }; - 77D9E1BA247DE33B9BBF954A3EA69BB2 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D5CCF7ED612EF7C532A88636622B9 /* IQUIView+IQKeyboardToolbar.swift */; }; - 781F3526AF90F13DAEDAD4253E29D082 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E3CA8F2835E754B24955AEFF1EBD029 /* SDImageCache.m */; }; - 7821A022F9F793A76132E794C031580C /* GTLRVisionQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = ECD595F38C65873191A7F279C7C31DF6 /* GTLRVisionQuery.m */; }; - 7823B12C37845FD5E7CC8534A46D0E74 /* FIRInstanceIDDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D3ECC965E0CAEBA5A523D75EADF88143 /* FIRInstanceIDDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 786C95141F53AA70665D8BF433E8DD67 /* FIRCLSReport.h in Headers */ = {isa = PBXBuildFile; fileRef = 171C03052F2860CA008BEB65E3DC28AA /* FIRCLSReport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 78E879E2BB2FCDAE6FED4C997ECEF9B6 /* GDTCORUploadPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F7498B7158567865DA5ADFC975F182A /* GDTCORUploadPackage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 79277E06065625F5473ED7D0626C3A68 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = DCAB042B1642241D956DAA1BF7AE362A /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 798D7750E262526BAA85FE7F072B23B8 /* FIRCLSSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = E3E5DF82558B6C423EA12FD57C8AEFAA /* FIRCLSSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79BCB62F13F1563F5614EC6C4ECAD98D /* GPBDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8DBDEE150292127AF8808AF2E040EE /* GPBDictionary.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 79FD7C8EFDB479D2EB1BF9B2E0B24DD0 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1336A0B9C0B72881F125CAF60429A5B0 /* SDWebImageDownloaderOperation.m */; }; - 7A4F4A16371A9EBA93B23D9CD125DBBF /* FIRInstallationsLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = BC25E46F74BB67B221D96E4987D3963C /* FIRInstallationsLogger.m */; }; - 7C583B135139B325459834220A6FC8D3 /* FIRCLSOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = BED6B3F4E2B6A1B3C0F44985AC9CE9A6 /* FIRCLSOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CA390F43740FCBA925CF1B4C961E322 /* FIRInstallationsAPIService.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F6D0A625FA0E8F8D7FDE1FAC5866105 /* FIRInstallationsAPIService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CC7B52D47586B822A1D37FAF594A2E6 /* GPBMessage_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FEF05809A9E6884D039A58FCB543A1B /* GPBMessage_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7CCCFC563DD28BBC2E8F47483457670B /* FIRCLSFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 255CE099268D211663D284BCE9B1E950 /* FIRCLSFileManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CFC9AFD1D190791F910F4A5A2BAB553 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7422611F8ABDA7C28CB5CB40647738 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6FC3A34D4DF098F5A3243F6E78CA7B8A /* GPBType.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 32C000DC3744D0D8D5482446D109C95A /* GPBType.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6FD3785ECD2A2DD56B7C2DD48C6590DE /* GDTCORRegistrar_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A90756D50AD67413EF59F34F99FF9966 /* GDTCORRegistrar_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6FE1C539E9B18AA438E6F3837670F80F /* FIRInstallationsIIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C980490541BBD694A601982434D82E9 /* FIRInstallationsIIDTokenStore.m */; }; + 7023ED3BD58FDA30AEB45891870B1D57 /* FIRApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B031085E5C84236632A7007133A456D /* FIRApp.m */; }; + 706BDA7256DC5F99158DBB48AD6C7C01 /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6481E12EAA7D31E5531B2A3DC3EF712D /* ConstraintView.swift */; }; + 708998A6071608420C1560645CFD9EE5 /* GDTCCTNanopbHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = FD84F1C93B89CE0A89CF4CE2266B99ED /* GDTCCTNanopbHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 70AF57E21EFADB08318EF132DBCF2142 /* FIRCLSHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EF45E6B34E8A833D201AF18DB4D1DD1 /* FIRCLSHost.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 70BE02AB7D87BA952406D342473E52BE /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = FE39F4B25F3D27D7AD4DA7C2EFE25A35 /* SDImageCacheConfig.m */; }; + 70C2E07F1D35A259A63C9A9609B921C9 /* FirebaseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EF2E459E39E7C0EAFF99ADE1ACCB5B5 /* FirebaseCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 70CC44E4CAB5C49E5B8BC3AF26245EFF /* rpn_lstm_engine_tflite_latin.bincfg in Resources */ = {isa = PBXBuildFile; fileRef = 391613B67A215C98C7D97486ABA1C8A8 /* rpn_lstm_engine_tflite_latin.bincfg */; }; + 7104EC656AB9318CB7800F19DE7D5E56 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00219A677D07FDE9DC4472059174638 /* Security.framework */; }; + 7125FACA7E3B3A161F574A760F7AC549 /* region_proposal_text_detector_tflite_gray_quantized.bincfg in Resources */ = {isa = PBXBuildFile; fileRef = 5025A6C7D9DFAE3E534E9229F49480A2 /* region_proposal_text_detector_tflite_gray_quantized.bincfg */; }; + 7126D283FD63F59771E36B7DC3996AE7 /* FIRCLSReportUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 402BBBC82138285D1D44910E61312602 /* FIRCLSReportUploader.m */; }; + 714A3F034033DC1FA04E480875010012 /* FIRCLSConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 876D04D2F8020D7D2975D648E7BD721B /* FIRCLSConstants.m */; }; + 715E50A5ED229CAA1E2B96C56EB198DF /* NotificationBannerQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBC76A84869AA9264A1DB540761FBF5 /* NotificationBannerQueue.swift */; }; + 7172C49E0B59C7EE03107E59EF8EA44F /* dwarf.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C174D5D686676E2599C18573BF84F8 /* dwarf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71D8072CD29CF48938990BCF89B5C0A5 /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 00DE726E4E6B60A310BEC866DD6F35F7 /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 72270EF2EC5EC5140C485EF2B77C7C02 /* FIRInstanceIDCombinedHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5503DC7BCC86D7F3B07D0C0B2ABC7B /* FIRInstanceIDCombinedHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73805676A67E3E2B8041FA939A27A102 /* GULAppDelegateSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1DFEEE962A97F257986F5D6F7BFBE5 /* GULAppDelegateSwizzler.m */; }; + 739BD42FB732B584D4FDE997F46F880F /* FIRInstanceIDCheckinStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A1A9CC172ACA2A94470A6DBAF0D5459 /* FIRInstanceIDCheckinStore.m */; }; + 73DE9F90C60832ED45002376D5178DFA /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 21A0969C342AD5A731788276912DB3B3 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 742F484E4D02E0ABF18CDDAC5EEA6A69 /* GPBDescriptor_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D90D630E29EC7991D869CB416D2A259 /* GPBDescriptor_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 748612B9474F4D3FD539E7E9C5112639 /* FIRCLSSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 7590A8B996077BBBCB58548DD9828305 /* FIRCLSSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74A76DA5106787D7C27350606E8E9CDF /* FIRCLSFABHost.h in Headers */ = {isa = PBXBuildFile; fileRef = C45EF0E4BD21B870B401AC7A9F4BC934 /* FIRCLSFABHost.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74D738F355A93EE7BF760EBBFC075663 /* FIRHeartbeatInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FE6A666FB3BBC90A963E7678853FCAD /* FIRHeartbeatInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74D80757B3B6138539EE9892889D06C6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AAAC4E1CEA86B11DFFC6B6267516883 /* UIKit.framework */; }; + 7530926AA7B19D0F0380ED5ABB398DB3 /* FIRCLSURLBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = E7BBFE8A8EC00F03F85CD1CE0470D6AB /* FIRCLSURLBuilder.m */; }; + 75685485169227D895A6AF094A9D478B /* FIRAnalyticsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = E9375E5A51A18FCE3FDFFE4FD030CC84 /* FIRAnalyticsConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 757AE00976EF3E1699B1C975300B1AE4 /* FIRCLSUnwind.c in Sources */ = {isa = PBXBuildFile; fileRef = 4F9C9A9B606E5304AD7F315899F119AF /* FIRCLSUnwind.c */; }; + 7664FD4F59A0C00866CBAE60B0A3AD64 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 771332A5A23B8A52667DA9EEF8CD3A2D /* FIRInstallationsIIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9828298B491FE73D4B2D4FBD8F947EA2 /* FIRInstallationsIIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7780B77C0860C069ED47FA2A7FF0CF71 /* FIRInstanceIDBackupExcludedPlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ADA2AAA92871FA7CCE018A3A1607CCB /* FIRInstanceIDBackupExcludedPlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77D9E1BA247DE33B9BBF954A3EA69BB2 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD1FFDC696E79B631C87891210C58B6D /* IQUIView+IQKeyboardToolbar.swift */; }; + 77F4ECB4F7C3B082F3B38012EA570EF3 /* FIRCLSAllocate.h in Headers */ = {isa = PBXBuildFile; fileRef = A96A4552CDDA8E166C9BD1639FC8850D /* FIRCLSAllocate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7808B943E8B9FCBAA5D3AE5FA7357120 /* FIRInstanceIDTokenOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 009D4B5EF871F53B033D51B0DB42C68A /* FIRInstanceIDTokenOperation.m */; }; + 780BBBDE8914D3EBBF0CF989B40A8FB9 /* FIRCLSURLSessionDataTask_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = A471924FD26F5382F6024E14FB627FD4 /* FIRCLSURLSessionDataTask_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 781F3526AF90F13DAEDAD4253E29D082 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B30B5A958997E51478E3609B1EA611DD /* SDImageCache.m */; }; + 7885788896BAA18BA291B2574B6C7B8D /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B5BF288BA68B9314D3EEBF73A0BABD9 /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7891ADB0238415F3D559C66E44AE672E /* FIRCLSApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 01262491E1FC010EF0D97FA1996DA841 /* FIRCLSApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 78C3E3E3EF833D9D523C43F986A19FD0 /* FIRComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BF04219A8377224598FD0599769B67E /* FIRComponent.m */; }; + 78C84F42B7C5852DFEA49753D3892556 /* FIRInstanceIDAuthKeyChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 94C84BE73E1ADEA5104E7C92BEAAA9DC /* FIRInstanceIDAuthKeyChain.m */; }; + 78FB4463B7E8F968E42FC8A388A8FAC2 /* FIRInstanceIDAuthService.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F715858774F0085C398BA3EF4B5E56 /* FIRInstanceIDAuthService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 790E7094EECCFCE26F2C287352A01ACF /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 78FDD561B62C79D13BBCEAB370E0ED19 /* FIRErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 79277E06065625F5473ED7D0626C3A68 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F6BA3A58CE78CA2615BAF39B3AB4F30 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 796AD8B194812A6204236AB7D765FA04 /* GDTCORUploadPackage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 05E1206C6455EC8D681044B41290831B /* GDTCORUploadPackage_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7976D007778370CDDC4C81F8F08C2C7A /* FIRCLSSymbolResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = AB61AF2BD0C7D162A1DC05C2F962371A /* FIRCLSSymbolResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7989254A0CA19646EBD77ECA97EA69CD /* GPBDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D0A1612CCFB26A4192E54726E5F551 /* GPBDescriptor.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 79BD1061C93EAF13755A217978F3E1C8 /* FIRCoreDiagnostics.m in Sources */ = {isa = PBXBuildFile; fileRef = A81BC0A1802671FFDCEB6766C358F159 /* FIRCoreDiagnostics.m */; }; + 79FD7C8EFDB479D2EB1BF9B2E0B24DD0 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = FA74F102D0437705B1B20EDCAD15A673 /* SDWebImageDownloaderOperation.m */; }; + 7A82F332BE8C863CD01C6057EE115A1F /* FIRCLSMachOSlice.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A5674569335EE8FD8A264D7DC0E155F /* FIRCLSMachOSlice.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7AC7831519631D39E66E4DDDFF39CFD3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 7AC838BA63BB6C5788C2ECC2893B1D38 /* FIRCLSReportAdapter_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 10F53FE67A551D64E6511AC55719FBE9 /* FIRCLSReportAdapter_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7BF7C6AECBF2FDD304B8A6B437E64CD9 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E45425CA794044E1EA7DEABEA6351928 /* ConstraintPriorityTarget.swift */; }; + 7C4E3BEACF095E15D01C0AB048944C32 /* FIRCLSFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 9068961FA234A8A48A7B811D3A99AA5D /* FIRCLSFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7C51447686F11E155BD6FA9098481AA9 /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 774D2DB0D181878C5D1D2AC46B874EDE /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7CEF1FBE49F2B819C71DDE07A08AC97A /* GTMNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = C52B51A2A45A39A4E8EEE0CB88B7076D /* GTMNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7CFC9AFD1D190791F910F4A5A2BAB553 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5ADEC945E94C9EB23054E7EFD12E57 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7D0074977D999C3F5E590BA20C4E4F31 /* Pods-FoodScanUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 59D13627F3AF9E16C579EDF1E93C66DE /* Pods-FoodScanUITests-dummy.m */; }; - 7D971C9C5A48C7DC4FBEB11A897552D7 /* FBLPromise+Wrap.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FFBF7CA05659D5DE401970DE4BB9996 /* FBLPromise+Wrap.h */; }; - 7D9D2BCB70C430EF4BA78E9EEF1E4859 /* StatusBarNotificationBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25DF81714902CCBD69940F115076B5A1 /* StatusBarNotificationBanner.swift */; }; - 7DEAE588111813D378725DB8FEA2481A /* FIRCLSBinaryImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A7A6C342F6B92699B71DE0DA7B1D896 /* FIRCLSBinaryImage.m */; }; - 7E0C3D4D23286DA0DA142B0E44D19002 /* FIRCLSFABAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 19C1C5CA8EBE688B9847923F29F59151 /* FIRCLSFABAsyncOperation.m */; }; - 7E0D803C8560157276D0B43330EE67BD /* FIRCLSContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 054878626B006D9E9F4B316D44600EF3 /* FIRCLSContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7E169ED4A74F2ADAFED9901CCEEBFFB7 /* FIRCLSUserLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E5E7C766835A6036388966ABA21D350 /* FIRCLSUserLogging.m */; }; - 7E27B9911B7931DDDF567742DC97B482 /* FIRCLSCrashedMarkerFile.h in Headers */ = {isa = PBXBuildFile; fileRef = E29863F377F20E0CFC8174915A3F71BC /* FIRCLSCrashedMarkerFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D5EA4BBE3FD96F57C48582ACA9A4977 /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 0994884AAEAE308F4C973B3EDF9297D3 /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D9D2BCB70C430EF4BA78E9EEF1E4859 /* StatusBarNotificationBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAF15C4C71AE6A1D77DA796CC6215286 /* StatusBarNotificationBanner.swift */; }; + 7DC7CE22C8F7A5F5F218F4EDE7B0976F /* FIRDiagnosticsData.m in Sources */ = {isa = PBXBuildFile; fileRef = 235E9D3725149138D33E735E968FD8FD /* FIRDiagnosticsData.m */; }; + 7DCD44B93FECC03B5A46B95176B44589 /* FIRCLSRecordIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = 89880C80D190EFD58C23AB4CCC88939F /* FIRCLSRecordIdentity.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E3E1790D82442ECE8767F843EA58979 /* FIRCoreDiagnosticsInterop.h in Headers */ = {isa = PBXBuildFile; fileRef = 26912EC85A74DDF4B0BA50AC69C11BA6 /* FIRCoreDiagnosticsInterop.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7E5C9C052C0BD133ED9840C1FAD366D9 /* Pods-FoodScanTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B085F4712B9EA769F4B625EFB4FC056 /* Pods-FoodScanTests-dummy.m */; }; - 7E870DD4BC1FCF4EDA964F088008F1B7 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49BB00934662594786C89A059A3F1481 /* ConstraintConfig.swift */; }; - 7EA83F0ABCC8E6DDC9CE99B48A20D6F2 /* tflite_lstm_recognizer_latin_0.3.conv_model in Resources */ = {isa = PBXBuildFile; fileRef = 0C09FA29FA108EAF03D24D768884DD97 /* tflite_lstm_recognizer_latin_0.3.conv_model */; }; - 7EAF821DEC2D9D38BAC58B8E92996880 /* FIRCLSCompactUnwind.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DBC7EC2E446B2213C7A6FAA6AB6B89B /* FIRCLSCompactUnwind.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7EC8E8BC904C8DEEA88BBA95A154667E /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 23C8281966B9F5CEFFDBAD860A19B167 /* UIView+WebCache.m */; }; - 7F4358B1269E3432C4AB1BC6219CC7DF /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4954CF7BBF11C5BD61AE27EC956A2F89 /* ConstraintInsetTarget.swift */; }; - 7F4CCF950DF3D64C2876539A07265C01 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C637715DB1FAF7D73CB9DE3C781952F /* Constraint.swift */; }; - 7F5B6041BE2167DCA80ACC43596F4C10 /* FIRCLSMachOBinary.m in Sources */ = {isa = PBXBuildFile; fileRef = C53F2833FA43F1A51E0DFBB4442506AE /* FIRCLSMachOBinary.m */; }; - 7F7959F9F2F9ABCFE6B70A716F483BB9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 7FD0044D172A24D614E8B03DB1CD8CCC /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093E345076B1AF0B27D988AB88966279 /* ConstraintDescription.swift */; }; - 7FEA76BF6477685ADC152BD843E3A0C8 /* FIROptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 69F59A55FC55876146A92EBB661C9780 /* FIROptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80507F2374D2728D0A7EDB9C12D60EB9 /* FirebaseInstanceID-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6479D558AD8DC116862189B6D60F8D52 /* FirebaseInstanceID-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80748034AC353EE811EF3F6606F97E64 /* FBLPromiseError.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 4170B9A0E6D64C8E5F469BF40090172D /* FBLPromiseError.h */; }; - 80AF6E3CBF9AB2626980128D1D8A9614 /* FBLPromise+Timeout.m in Sources */ = {isa = PBXBuildFile; fileRef = 27D3CC13234B911423F70C4485592250 /* FBLPromise+Timeout.m */; }; - 81393B44411A35759E116B55637E9AC2 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15D08CFDB7349E8ED65953ACC0B6A055 /* IQKeyboardReturnKeyHandler.swift */; }; - 81780BE3766447374A57872A287B8B96 /* GTLRService.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B64BB3B3198FA97314CB7128498F97 /* GTLRService.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81B4D53B19928BB8C11B5F8B2797F9B5 /* Protobuf-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CAFF6BED9E8C596A3BB9C9DB76F01936 /* Protobuf-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 822459BA9E891984A1D4BC80CEF9B9A0 /* FBLPromiseError.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C7ADEA21D74B0C0D64779EDAB44F791 /* FBLPromiseError.m */; }; - 829BBCAC76971EA9459979D94EC66BFD /* FirebaseCrashlytics-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 345FB2309483C07479DE27C9E89EC4C1 /* FirebaseCrashlytics-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 829E25C2B13D47EDF4C455C2C5226662 /* GDTCORTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 88FE76301D83CFDD602C6F81865DCD92 /* GDTCORTransport.m */; }; - 82E187B1928213924FF6F676C611EAAC /* FIRCLSMachOSlice.m in Sources */ = {isa = PBXBuildFile; fileRef = BB611DE355A471B6AE18D0BF50576813 /* FIRCLSMachOSlice.m */; }; - 833C3A678F4937440B73B4D2E34D969C /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D0C9787477C44B59BBF21522A930E9 /* ConstraintMaker.swift */; }; - 83956E20859CDBBE7BC38ABADE0170FB /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88726731F9E6B469AC3D265940576F29 /* AFError.swift */; }; - 83A75276EDFA1D57B70CA8EA8F5FFC03 /* GPBUnknownFieldSet_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F0127120A30E5ACF0148FE48F690DC1D /* GPBUnknownFieldSet_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 841EA5A1F23C9EF7C43E30BBF1F56E06 /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D29DFA073D48CD5A9B4A4CF05F0F6CD /* ConstraintMakerPriortizable.swift */; }; - 8486CCB140F42A4150A9F1D0ACBFE69B /* FIRErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = AAFF4BD5723500231CF6B5032823A139 /* FIRErrors.m */; }; - 849CD8CB4D0F2ABE5EEF74DC0FF1DDA1 /* FIRInstanceIDBackupExcludedPlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A498196B15029777781274E8DF6E458 /* FIRInstanceIDBackupExcludedPlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84A3DDEB61A691D25E2B75BB3C2D0C8C /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6022D46D8E7B0A19CA237A02C5368C84 /* ConstraintLayoutSupport.swift */; }; - 854F502FAF0C311F965424BE68DC0D1D /* GTMNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = E50F7E52D14FD089EBB57FD2C137153B /* GTMNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 85955F3F75820143617C46D87BF3B172 /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = F2BBF9E09711C1A7DCADDB80E1CE945D /* FIRComponent.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8606E57F7AE6681F4575ACBED843E65F /* FIRInstallationsLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 203DBFDB75B494F2E0981411882BF48A /* FIRInstallationsLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 868BE6E52BD3B8BE9A1719130327E4AA /* FIRInstanceIDAuthKeyChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 3445BD06ACBE4FBB8CB22B04EAF052E9 /* FIRInstanceIDAuthKeyChain.m */; }; - 868CA8AF233DE0FE36F9A031614EBE12 /* FIRCLSSymbolResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6966CB27FB7C2C9ADD860651D7071B40 /* FIRCLSSymbolResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 86CA93F5347B3F5F6DEB6F559AB5DE58 /* FIRCLSMultipartMimeStreamEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 961FE5DA7A557A3AD55F9A5A8983FB8C /* FIRCLSMultipartMimeStreamEncoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 872F6DEBD1FF4F61CC5FA2D5C191BF49 /* GTMMIMEDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EE9728FB9411EFE024602E5300DF36F /* GTMMIMEDocument.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 875C93BE25F8C410281B319C91934B2D /* FIRInstanceIDConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = C7D9945952692B5A307A84E882241324 /* FIRInstanceIDConstants.m */; }; - 87D8A7CEE5452C210004375BCCF3F412 /* GDTCORReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 77DBB73A007448CA49D20461A1EF734A /* GDTCORReachability.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 87EA2C172083507879B64A6EB62C3BBD /* FIRComponentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 364C9A63D8CC30BE0A1C8DF24AF8345E /* FIRComponentType.m */; }; - 882DB7D864B702A2E5698F4A3090E211 /* GTMSessionFetcher.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0938778595C2A65E2DDB8C9F047EB98F /* GTMSessionFetcher.framework */; }; - 88ADB627F987FDE520537286C40D7A15 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4F449E0BBE717ADF94DCD5052058AB7 /* ImageIO.framework */; }; - 88BF74B36440B0CC0556F11E6A32AF5A /* FIRCLSApplicationIdentifierModel.h in Headers */ = {isa = PBXBuildFile; fileRef = A63947CA56F525451EC85A120D05B366 /* FIRCLSApplicationIdentifierModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88D0314CEB33826D7BF73600418F66FB /* FIRCLSURLSessionDownloadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = AB9B3B4064F68DE03277AD108EE049B0 /* FIRCLSURLSessionDownloadTask.m */; }; - 88D878C4746418FDC0540BAABA44B440 /* FIRCLSHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DA2E5FC7E49DD5DC7EC83646E8511DD /* FIRCLSHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88DB5C287EF7255C59E8ED6F94287EC3 /* FIRInstallationsErrorUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 82E19C4398E4735192F761570134DCED /* FIRInstallationsErrorUtil.m */; }; - 8912180A74939BF82E5ED7D37A162F6F /* GTLRQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC0B939245A06998182C0FEE1F1B0D8 /* GTLRQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A475A6A37AD562FB1F6F76C8E7E9AEF /* MarqueeLabel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1D91B2B960B40A99CCAB95DC63A549D /* MarqueeLabel.framework */; }; - 8A4E5775987E0FAE89ED481766FC2C09 /* GTLRVisionQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AC6F1F922CF60E74E8720A2ADC70184 /* GTLRVisionQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A5282A0D57D9C3222DEAC1CD10B9761 /* FIRCLSAllocate.h in Headers */ = {isa = PBXBuildFile; fileRef = C2B843789E16BCC61CA5BDB3696D6218 /* FIRCLSAllocate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A8F296B76DE106441D3665D20370802 /* GoogleDataTransport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 166C0C862584635307AE5FDEAC9376C3 /* GoogleDataTransport-dummy.m */; }; - 8B7A1DB31E375BB55949651F2E982796 /* GTLRErrorObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C27E5CDD0272AFAE2658C9D782153DB /* GTLRErrorObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BF86037EDF057C8E6D6C9DFFDDA36A3 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 624FD51B55946984B8813437A8991010 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8C293BFBB223F27F5DC11465FF4F6857 /* FIRCLSMachO.m in Sources */ = {isa = PBXBuildFile; fileRef = 381DD9D94ECE295C7E294372185119E5 /* FIRCLSMachO.m */; }; - 8C80818FD7C49986AE24BA4150388D54 /* Popover-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E362774F34E9BD34184C08EA8DD1BB46 /* Popover-dummy.m */; }; - 8CA509CD2E516884F880CC8A1A4B47F1 /* FIRIMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6C26FA89F5178AF575CE3A57BD7735 /* FIRIMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8CC2218B480DA0CD72829A5C4AEA8929 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01CD1FE18BF54DFF9F4F3DA4FD25CE80 /* IQInvocation.swift */; }; - 8CDF91987B945089AA238EF8586B544C /* Timestamp.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ADA3A28C6ACD641C285EC52500B5BCF /* Timestamp.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 8D2A718D7025A4204AAB40FB0F1BE46F /* FIRCLSProcess.c in Sources */ = {isa = PBXBuildFile; fileRef = B3D5FAEB0E3594B3A200989FFF2365AB /* FIRCLSProcess.c */; }; - 8D4E46E68FF7417C8A4BDB4D36563231 /* GTLRObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D4106261F27E712181D4F6458B7EF097 /* GTLRObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8D9B945F0AFBC1D1097696AB22F99BCF /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 531F005DA711676D4F8C17E30FFC44DD /* SDAnimatedImageRep.m */; }; - 8DDF6C40868BB4515D65D7D34D010361 /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = B622A8D1F54BBED4389D1B839FF1B563 /* ConstraintPriority.swift */; }; - 8F339918750E6D1E0B15B431A8009B7B /* BannerHapticGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E2D94C21549355CEFD27780CBB8680 /* BannerHapticGenerator.swift */; }; - 8F70E70E64F899537D38A1F79F8D57B5 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = ACF84AC422BD6301FEA8E64ABDC2C6DF /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 901FFC7B0FA6BC3D163533A93CD0C5E7 /* FIRCLSThreadArrayOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F2BBF2BDEFECA1B1716B882317510C6A /* FIRCLSThreadArrayOperation.m */; }; - 9021942EDFF218CA7FBF8F69247D30C6 /* GULSecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FB21129D44CBF1D93AD501384099E83 /* GULSecureCoding.m */; }; - 9044C16C53572DA529AE551F1C1BB582 /* FBLPromise+Retry.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 854A2BE8A740BFF4CB53562D6EEB7F60 /* FBLPromise+Retry.h */; }; - 9069B0116120263DA3AB7E4F5E0352F6 /* FIRInstanceIDTokenDeleteOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 43DAD21B36E9C2EEBC4F8B4F212B2D7F /* FIRInstanceIDTokenDeleteOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 909D7B410B78CD55FD7F11E56DDC746D /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 327EF4186935E9FAA6E228C4FAC352E0 /* Typealiases.swift */; }; - 90B823AEFD1ED5577DB61577B12D8FA2 /* GDTCORReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E872C7CD89F6ECEE914249080A1F110 /* GDTCORReachability.m */; }; - 912B2C213BFB27A21E159320B5EE2617 /* FIRInstanceIDTokenInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8108FF912F670E5EFDCBD5B23ABF15D3 /* FIRInstanceIDTokenInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9253B6F1F47FF8747C457BCE42741BEF /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 835FFE1EE660F00742EDE566DC8C0071 /* ConstraintMakerFinalizable.swift */; }; - 92A794E9CD8937EA57310E2E08E7DC8B /* FIRBundleUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = BC2EE7BCBA8C6B977095F140F50A3D03 /* FIRBundleUtil.m */; }; - 92E8DCC5A2A1B21E6F558D6584C07B94 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 930DA4298659166216DFD5AEED64A8D4 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FAF3F255049AA63D9A41DE1788BB37 /* LayoutConstraintItem.swift */; }; - 931BBB8230A25161D5C37528A8F9FECF /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B0D44A079B3170506CD871C2DEF08E9 /* SessionManager.swift */; }; - 933FDA5970AA525D6CB92BFEBA2BAB4A /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72451FF952AA4FB1296780F830175D8 /* Timeline.swift */; }; - 93E467D4D73D433BD7EF93DC9D6B7DAB /* FIRCLSFCRAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 23ED48620ACC2AC79566B026D0E70624 /* FIRCLSFCRAnalytics.m */; }; - 94C5F80E88C403348C6618C43EAC2AF3 /* GTLRRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F1C234DE2579A014835C4A80CBE7072 /* GTLRRuntimeCommon.m */; }; - 94E8825734DEDE5AC8FDC1EDEE4F6D2E /* NSError+FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = A78327C581F5A5D62A84D29A82E5EF69 /* NSError+FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 953DE369D1E8D0C89BAF73BE14026A78 /* FIRAEvent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FB6DDDA51F598D677773AF968B4364 /* FIRAEvent+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 95D7043EC3B7A07237016ACB5D53510F /* FIRCLSdSYM.m in Sources */ = {isa = PBXBuildFile; fileRef = 9436204F1C57B64F9BCC86706E0234B5 /* FIRCLSdSYM.m */; }; - 96559A0151B5019CF41DBCCDC0F7197F /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 26EA8DA73DD699790FA3015A3A0F34A8 /* FIRInstanceIDCheckinPreferences+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9666BD92C0FA7D5E864AB9DAED01EB37 /* FIRInstallationsIIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 4441691AA83FC8F8736FA82AD0844B46 /* FIRInstallationsIIDStore.m */; }; - 96D130BB7E025036B15EBDC6ED79CBE3 /* FIRInstanceIDCombinedHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B3989DA7E8A929385FF24036FD5488E0 /* FIRInstanceIDCombinedHandler.m */; }; - 96D808A94EDBB67A629343B90EB8DED9 /* FIRInstanceIDUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B660020338109295504EC39BC2326932 /* FIRInstanceIDUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 976D60FEA2C0B5E4E689793424EFF28B /* FBLPromise+Always.m in Sources */ = {isa = PBXBuildFile; fileRef = 258F6A0FFC8420F4879E82C0A76530DB /* FBLPromise+Always.m */; }; - 98863E6DD7A9C7F8D126AC0C1913A704 /* FIRInstanceIDConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = CFBA599CAF9BA50DF7049394C4E0199B /* FIRInstanceIDConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 98A929C8E9012AB167672714FFD2113C /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B1FD9712B1050A7C12BEA0BF6EDDA38 /* Request.swift */; }; - 99160823FED835FCC8C51C78B4B41F49 /* FBLPromise+Async.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B5D9FFC88CF8583B440A17D5F1C6E4D /* FBLPromise+Async.h */; }; - 9965A32C030DB9F397755027037CC135 /* GDTCCTNanopbHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 897F1528B5ACC3C7DE817CFD8051126D /* GDTCCTNanopbHelpers.m */; }; - 9A190698BBE6E581B8BD9B9259749C96 /* GPBCodedOutputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 71E6B23B6C9BCE068D430429C0C52F26 /* GPBCodedOutputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9ACCC909B4D348856FF8BCFC6A26892D /* GDTCORUploadPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = FCED56686462EC9815FE5557B90FC526 /* GDTCORUploadPackage.m */; }; - 9AFDF774E8D9172B3E2A41A6A0949C49 /* GDTCORTransport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E8997CAC5DDD62C8F198C85783A5C015 /* GDTCORTransport_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9B2533A06392F0CB41780EB612F606CA /* FIRCLSProfiling.c in Sources */ = {isa = PBXBuildFile; fileRef = 7305DDA91D75040E07C6F53F287D37B1 /* FIRCLSProfiling.c */; }; - 9B806236ED88013833148BA523D50E16 /* FIRCLSUnwind_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CB8D94894E86DA7169D762EFD06ACFA /* FIRCLSUnwind_x86.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9BB851A97571D18E0FF179D463E98857 /* FBLPromise+Delay.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 3C6BE4A52089B9E15E09DDAAFD330A9A /* FBLPromise+Delay.h */; }; - 9C1144EA5EBD6328A15D30E58BBF4496 /* FIRCLSInternalLogging.c in Sources */ = {isa = PBXBuildFile; fileRef = FB0B320DFE9149A67E2111C9C7A38343 /* FIRCLSInternalLogging.c */; }; - 9CEA36D68635F7E9457A32774CAB6A7A /* FBLPromise+Delay.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C6BE4A52089B9E15E09DDAAFD330A9A /* FBLPromise+Delay.h */; }; - 9CEA7FD30BA4CF54989A1C7923B005CC /* FBLPromise+Await.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BE1EC704E4983E25C22741FD2BEFE0F /* FBLPromise+Await.h */; }; - 9D3EC8CCA9EBF144ADA4B6823A1791D8 /* GULSecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = A6416578839E074D2575C0247F57A5D1 /* GULSecureCoding.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9D60235277EEB2A0A45939E8F09A7D71 /* Cosmos-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BDBCB5A922A3939E81BE34161440D72 /* Cosmos-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DC62E041F6532C2FF2B47742EC4587F /* GDTCORRegistrar.h in Headers */ = {isa = PBXBuildFile; fileRef = 6295582113239D8EA93A32599EC97C92 /* GDTCORRegistrar.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E15273697EBEA54BEE795E6BA60C67F /* FIRCLSSignal.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F063FF318A4B91B8420AFB36CD1E84 /* FIRCLSSignal.c */; }; - 9E30499B417D3FFDD2D41AE753A1CE0A /* FIRInstanceIDAPNSInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8BCB8E624614E3040C4F7956D08819 /* FIRInstanceIDAPNSInfo.m */; }; - 9E972E03FA2B4DB1D36DE77F595947F0 /* FIRCLSMachOBinary.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F78691F4AD4DC3E4B0BD01B9F775D7C /* FIRCLSMachOBinary.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9EB93C9AF9E26DDAF545C5806C9E5D5B /* FIRCLSUUID.h in Headers */ = {isa = PBXBuildFile; fileRef = 427CEA2CCD49F57ED3522AFE5BEC21F0 /* FIRCLSUUID.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9EC8A2283B85384A8D76109D4473F551 /* GPBUnknownField_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D1E3BA3568609D149DE08C6F1299071A /* GPBUnknownField_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9ECAFB39395B72AEBA994CD019240C18 /* GDTCORPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = D1CB907638B66D17671F1124658DFB2C /* GDTCORPrioritizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F4E53A1A55BC3E545FA2A21EEEDE702 /* GPBDictionary_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F52ACDB18BE515211BC3CD0D84B5052 /* GPBDictionary_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F5640657DA2CE1775F92DB0AFB96EB1 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D646327442F61417544021A8A7B75D9 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F5D3E7FC94DD4D3BC8E7C5F32FACBAF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - 9F9971373AF43BBB91B0E5ED0066D767 /* FIRInstallationsItem+RegisterInstallationAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3CA16A77F491989B36DF5B57717E55 /* FIRInstallationsItem+RegisterInstallationAPI.m */; }; - A01AA94583029FE4DBC19905828C5F70 /* FIRCLSFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 839D57FA23500F82E99EC270441A1D2D /* FIRCLSFeatures.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A06586F6C95F5672F87CCE76EC1C03DA /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 21F3D81A3DECEC5F5BF291ECEB910C63 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A0E7562E696BD40E4D86232FFC137CC5 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = F3B885D3937628B2E4E09FA2AF0AD2ED /* UIImage+ForceDecode.m */; }; - A0EEB7B3355A037F9D5DF5A96BF00A17 /* GDTCORUploadCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2593D63D2D3351911A218E362FD2D5 /* GDTCORUploadCoordinator.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A1829F0DDA4206A9E833B3C862CB5A1A /* GDTCCTCompressionHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 10B470C1AE0F980485D2F5676F3DC962 /* GDTCCTCompressionHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A19E51C554048356F1452767813A7E17 /* FBLPromise+Race.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BB2EAB7C9C2E639F73625E60EC25DBB /* FBLPromise+Race.m */; }; - A1ABAE59DFE235669D08A9A1C8A0F36C /* GDTCORLifecycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 24BD3A08F1877181B4373653FB8409A8 /* GDTCORLifecycle.m */; }; - A2131334A4773FF5A27BA28B2BEC7BAD /* FIRCLSAllocate.c in Sources */ = {isa = PBXBuildFile; fileRef = 25BBF0E8A1196A9718C1F6DB27FE4773 /* FIRCLSAllocate.c */; }; - A2195480FD04EAD347BB54512D60F925 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E3D44D9B9B1992DF3B506E22E3A7FAB9 /* UIKit.framework */; }; - A30FE83C634F0B610759677766560328 /* FIRInstanceIDTokenOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D7D41FEAA62A857C5D8A3023F209BCA /* FIRInstanceIDTokenOperation+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A396F25162B95799B51DC01503A28753 /* FIRConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 71645F65A5978FF9D30140D6C2A4B52D /* FIRConfiguration.m */; }; - A3D3D3F5BA5FAD00B7F980A6F70D115D /* GTLRBatchQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = C30C791C0900E3D6D448685C791EC0BD /* GTLRBatchQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A4A3D6EA6043E83DF4A8C9AA56C9A743 /* FIRInstallationsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 9416C32F1A71DE1E29C63790DEE3EA65 /* FIRInstallationsStore.m */; }; - A4B26F9C0AD28AC8629E03B084D58153 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AC598886E99330152E424A86844474BB /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A4C2A749CEF80B49EC6C67CFF33627BE /* FIRCLSNetworkClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 887F101E335BC1A2923F2BAC05ED0E41 /* FIRCLSNetworkClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4E126B5ADDC3488CC269071257B03E3 /* UILoadControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CE6057074760B846C0A925B4DDA4247 /* UILoadControl.swift */; }; - A4EEC50B476499D7774479ED700B7CAA /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D07B83A5A7F388A584D3D9EF72F60C8B /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A500F1B4ABDDED51F263B6CAAB221528 /* FIRCLSInternalLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0CF2750AF18E72FF48A645A75FE237 /* FIRCLSInternalLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A556D81389C609E451D8337406E9275A /* FBLPromise+Timeout.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = B616C44669FB2DBFA8DB638065BF5224 /* FBLPromise+Timeout.h */; }; - A62AD52A5F256ADEB724896AAA0F5F4D /* FBLPromises.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 127714FBDBB436BFCD96B4A7967A516B /* FBLPromises.h */; }; - A6AB2F1AE0DD83D47C17CA98AB7CDA08 /* GPBDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = F0665F90052BC6A53FECC6EA32D442B0 /* GPBDictionary.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6ACF3873DCAD3FCF1A773074ED922FC /* IQKeyboardManager.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 7D46C4CBC22320C96408EC4F4132D48A /* IQKeyboardManager.bundle */; }; - A6E7C58E58AE42E14B07F7F3C45F11D6 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FD3A6E4EC0144E06EA6278F70BCC7C5 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7AE360C0B9D23BBFBA0BF15E13579B8 /* GDTCORStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FB13B546485E68E8BE06ADA86833840 /* GDTCORStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A7B905E2474B0D359D484C5905A7C1D5 /* SnapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59CFB9BF52D6D2B8C840FC1EEC7BD0FE /* SnapKit.framework */; }; - A7CBD2DDD3336B3AE5B2895C812698FE /* FBLPromise+Then.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9D5990921AAC2DFFAA355B5F6D1CA41A /* FBLPromise+Then.h */; }; - A7D7797B0EF5AA3CB80C17393D330BAD /* GTMSessionFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = CBAE68482E86A52BA045CF3DC8C8C8B9 /* GTMSessionFetcher.m */; }; - A8010B12D99DFF0F0AE34256244FF3B5 /* GoogleToolboxForMac-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 43D7D5036ECF9E8FEAFE4619ABC286ED /* GoogleToolboxForMac-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A840CDB45FD2B5797F1356C35D897FAB /* Type.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 738F1DF5CC5FCFB91B2371F79D60EA75 /* Type.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A8817AC7E55C8BC848117BB7C93E8A21 /* GPBWellKnownTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = B46575E66007A40EE693DC9E49ED2EB9 /* GPBWellKnownTypes.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A887C0F52F2BAEAEA5820F5B33D9AD37 /* FBLPromise+Any.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C543B4564E64B8071CD3CD5A9C3C361 /* FBLPromise+Any.h */; }; - A8E9F3FDBA4A379585660CD123974DF7 /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D00788B11B20C5252B257AF56EE17CE /* SDWebImageCodersManager.m */; }; - A9E33EB0E361731A2D8B17F29DB1BDAF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - AA36D6C02ED71C2464A10173BDD135C4 /* FIRCLSURLSessionDownloadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA6119847F253761E8302FDC8978E02 /* FIRCLSURLSessionDownloadTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AAD4EFEA91F5A4B30F2A8512F4242A77 /* Type.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AC191F9D4D561895A733F6E64264BD /* Type.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - AB1C2D211D431C511D6392ACF5DE8F66 /* Struct.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = C30B8252426B6AB0000C47D67E4C1BB8 /* Struct.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AB5EBC55969F4B63B885AED39330C646 /* GDTCORUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = A02CA8EF1E6542EE0DF194B65B19A1FC /* GDTCORUploader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AB85AA0C8266CDC97B66D3A936D8DEE5 /* FIRCLSdSYM.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E38FB537FC7C95F88981FA1E4B34FEF /* FIRCLSdSYM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC11F531C82C508BC0CF2D8001081A7D /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13562C939F629FC48B16DAA5A110EF57 /* ConstraintMultiplierTarget.swift */; }; - AC3D1CA1437F1B47CE5D3F90D99BE322 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - AC7DAE5B261F8CDE268794A1B7B06F56 /* CosmosText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 886486E8AABFFCCDFFD997E1F5189628 /* CosmosText.swift */; }; - AC9F411947676EC070FC7301600B7D15 /* GTMReadMonitorInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E440DECB4FC1E443C074059EE44B346 /* GTMReadMonitorInputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ACE1A0E290D3F83A22B349C103AC7E0C /* FIRCLSURLSessionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B0832DDCBCCC1C16A0D214E80D690565 /* FIRCLSURLSessionConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADD5E8B391805446E98F20A4277A8D57 /* GPBExtensionRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E1A4A25FBEF7BDA5D0CC6F800F6667D /* GPBExtensionRegistry.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - ADE8E38AE2FC314562F857E3D97467C4 /* MarqueeLabel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 893C6126F6D870A9BB1AA65A903EDED6 /* MarqueeLabel-dummy.m */; }; - ADF15DD51232A3192B6860568220BDC2 /* GPBUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = DFF28C8D0DA69705F82E9BC162BD6FA9 /* GPBUtilities.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - AE2A5C330BB358D348FBF662D29BE710 /* cct.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C50AEB65EB62328E55198842BAA3337 /* cct.nanopb.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AE79D4BEAB37EA1F2B750B1B3DD652D5 /* FIRInstanceIDCombinedHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = BFCCD9324F36FFDB4DC77E66CD54CF0B /* FIRInstanceIDCombinedHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AF412E1718C13CD971400477521C51C9 /* FirebaseCoreDiagnostics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F0703C01EECAD452AA742A4D9B5E11AD /* FirebaseCoreDiagnostics-dummy.m */; }; - AF589E89D4DB80BE7798F370523D9639 /* FIRInstanceIDTokenFetchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 80F272E53DEC88E88CE17A2A827CDF8E /* FIRInstanceIDTokenFetchOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AFC64B1097F7355FF423D6A73E9C7210 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE9C3E58C550C2C62C30BDCC2397E722 /* TaskDelegate.swift */; }; - B0793D53469C051D9F0903C61BFE09BA /* FIRCLSProcessReportOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FE771C9DE0E5B6FDE315CD589F36060 /* FIRCLSProcessReportOperation.m */; }; - B0C40C97BF1C65AE8ED7104C5AA3F3DD /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7E2C10502F965A7733AB0239BCB969D /* ConstraintMakerExtendable.swift */; }; - B100E5D1BBA116F2A908751AB80471B2 /* FIRCLSInstallIdentifierModel.h in Headers */ = {isa = PBXBuildFile; fileRef = F54532B094D38025D8B8B1A42EDE2C41 /* FIRCLSInstallIdentifierModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1C86048B6C33EC25636E91C86E6B943 /* FIRCLSFABAsyncOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 576A3321DB0BA7D37857A03D773EDB1F /* FIRCLSFABAsyncOperation_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B36F11C76D7E51714FDD9BC0123D777D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - B3D5E1407586ECB0691CAB7D494F2EA3 /* SDWebImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = DB0A649CF81E2DC0D69EE64072D4667F /* SDWebImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B48CC9CDC58DA3A8086C287FEECDB969 /* GDTCORRegistrar_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5914452F33D455958E4EA029771440EA /* GDTCORRegistrar_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B4DEDB84E9D36BA51BFE9B517A0F4432 /* FIRInstanceIDTokenDeleteOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 58BA618464495B746B277CA8C44BFBBE /* FIRInstanceIDTokenDeleteOperation.m */; }; - B5494AAE0EC1160D9C8FBF3A18550673 /* FIRCLSHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 38EF0456BE7D62568E7D2334514F15D8 /* FIRCLSHost.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5642DECDA498B5E33625ACC1C0EAA04 /* FIRCLSUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = C44667F7CDE660CC6F42C1DA7E215BCD /* FIRCLSUserDefaults.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B56494555E187194D371FA44E150B4C4 /* GPBUnknownField.h in Headers */ = {isa = PBXBuildFile; fileRef = 957809922E897B0DA1EF8558EC38B509 /* GPBUnknownField.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B594E04185C4C7522C612C631B8AD97A /* Cosmos-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E5D93159E6FE842A18B061E25607F6 /* Cosmos-dummy.m */; }; - B5E7C9F0298866C27C5E22B952D56124 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C415AE2ACCD452A3A536AE6F60F77824 /* ConstraintRelatableTarget.swift */; }; - B64C2ED4D82F085470BCADF7ED287805 /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = C18403726406D5B32E789E3FED03C9F8 /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B6535DC89767409D837516A0180BD67D /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F5CA172C235EF27B842D7819DB8F96F /* ConstraintConstantTarget.swift */; }; - B686ADAED878534373FE4CF28D3BED99 /* FBLPromise+Async.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BBD3F5741D2641ECE344F7095D282A0 /* FBLPromise+Async.m */; }; - B6A27D2E5B6299099FE6FC05B3F19D71 /* GoogleDataTransport-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 61F4485DECFEE4CBD814D2EE5E2435CF /* GoogleDataTransport-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B6B08D7ACBCE50C4C3B9D6E48DBB8CE3 /* NotificationBannerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D751BFDA01431E2EA4275E69492792BE /* NotificationBannerSwift-dummy.m */; }; - B6C6E09C64EAFBD7AE0E087BA2DD5062 /* FBLPromise+Always.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED9E03F79A89856F65FB0A48CB5CA70 /* FBLPromise+Always.h */; }; - B6E14CED82289F74E5FF2053D436C2C7 /* FIRAValue.h in Headers */ = {isa = PBXBuildFile; fileRef = F87675A0A7691C6FE3B72DDF14BC11C8 /* FIRAValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B7E068346FC405C8C7B35005A8DCE740 /* FIRComponentContainerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B538FD1F3DB341C24820175F8DA452E2 /* FIRComponentContainerInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B83F217797AD5495CD923ACD234013D9 /* FBLPromises.h in Headers */ = {isa = PBXBuildFile; fileRef = 127714FBDBB436BFCD96B4A7967A516B /* FBLPromises.h */; }; - B8439071A516317A7A770551E954D831 /* GTLRFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 98EBC8FDBD7FE209F9AE2BA5DC36A5BB /* GTLRFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B8798FB961137A5987A58B57C00F1F50 /* FIRCLSCodeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = D35B6D2BF425B37177EF471F4F18710D /* FIRCLSCodeMapping.m */; }; - B8B70DAB160593E2878AD868EC470C8E /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A4314D9243DC8ABEBC25790C468BA8 /* SDWebImageGIFCoder.m */; }; - B8DA31D47AE7F1767544F0AB3BB52927 /* FBLPromise+Await.m in Sources */ = {isa = PBXBuildFile; fileRef = AB4F9BF31FD2C166A607E55642E362CD /* FBLPromise+Await.m */; }; - B917CD9E33261DAFDBED41F876786C76 /* Empty.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 252BB1ED6D7DB783EE213B9B808B365F /* Empty.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B96012765CA1B56756ECDA897771BA6E /* GDTCORTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 08980813BE7C96CE90EDBDA52842E9CD /* GDTCORTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B98E1F3923B10FF7B4A02E29E4A637E0 /* GTMGatherInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = CC4BBEA7A1DDF7150A3D1A7A9513044C /* GTMGatherInputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9E702E84151F4D198A859C11E942FE8 /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = F59F320403A7F3B89B38810E1276A05B /* SDWebImageTransition.m */; }; - BA0FAB96B57938D9DEB74A53F6B4343F /* FIRCLSBinaryImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DC09C9F7C27FB94CE2433C0685E3567A /* FIRCLSBinaryImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA78F81D82ECCC2560AAE7CF2AF86754 /* FIRConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C334F1FC2C14A4F10D1460C07BF157A2 /* FIRConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BB45427A314AC869056C004AF3F9D507 /* FBLPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = D87B2986AD1A7E859A4B03964DCBD57C /* FBLPromise.m */; }; - BB7E665623FFD5539297A787C0577B9D /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C02B778495605C23E49DFAC7CBAB7A60 /* ConstraintLayoutGuideDSL.swift */; }; - BC1816E0A299460A7E9DE0CCF3768176 /* FIRCLSUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 94BF47EC123E8C3167197CCC5BD08416 /* FIRCLSUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC2362E084FC2F3D1403F395E43B2AE6 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E344BC55557B53F2A0672426BBC96B5 /* SDWebImage-dummy.m */; }; - BC40C276B0C6C701659ED8073ACA4ADD /* FIRInstanceIDLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF3F7A0110C035BEDF744DE8E296424 /* FIRInstanceIDLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BCAEAD0B6FB7CF3E6B2E299EC211A598 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 11E74B1E148A37C349FF1E2100145370 /* UIImage+MultiFormat.m */; }; - BD044C21CA2D482B62D58FDDAF1A2B9A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - BD2C137053C32B89B47E6BB3BFCF739B /* GTMSessionUploadFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = ECB98717847274411B1A41291CEB07A0 /* GTMSessionUploadFetcher.m */; }; - BD503BE4798FC30D23AC747146D39FE2 /* MarqueeLabel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 451228DEC8192B14C30C754943441C22 /* MarqueeLabel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD96FCBB3AB3409C0EAA81EA75C14410 /* GPBDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = EC5261206A9B4D04304FC7EC5F793D66 /* GPBDescriptor.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BE07A266D9887FE3CF8DFE5CF6212BF3 /* GTLRUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D725AA5DB8EAF50E3E1D18BC0B28C4E5 /* GTLRUtilities.m */; }; - BE6DA1C611EAF8FE4E8F917D651573DE /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = DB7AD804124B790F24E10F9BD067EAF4 /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BEAB0B41782A68006F272A779870C70C /* GDTCOREvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B413CD1D1AA8166A738B85461793087 /* GDTCOREvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BEE6B677416CA71C981D1D3F60B18C96 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3013760CB46015A7919E30420780BC49 /* Alamofire.swift */; }; - BF279E9EB16EF969016043078E78C849 /* NotificationBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C5FA1A1609428DAFA8B42781EBC76B /* NotificationBanner.swift */; }; - BF8138C6A247AC1F0FA75D23716C4517 /* FIRInstanceIDKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CBE2DBF2678CC3C8C0C58D83C5A3A19 /* FIRInstanceIDKeychain.m */; }; - C061CDD633140BB922A34746B6C45E53 /* FIRCLSHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 626CDAD14468A2014DF369DB0FFAB161 /* FIRCLSHandler.m */; }; - C0672926A56F1CB47AEAE387B354379C /* GULUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 809A8BEAFA2863076B202AE538280451 /* GULUserDefaults.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C0B939D81E6243D73C3744FAAA388E52 /* FIRCLSDwarfUnwindRegisters.h in Headers */ = {isa = PBXBuildFile; fileRef = 1379A57FD6611401929ECDF70BEB99AE /* FIRCLSDwarfUnwindRegisters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0BD556D43C16A24EDEFD9F3C16236E1 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82C91DD3874865CDE95CBAFC21933749 /* IQTitleBarButtonItem.swift */; }; - C0D5F472F17B5A0F9824C362F35A7132 /* CosmosLocalizedRating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B2560659D5312DCDEA36E0E58288D9 /* CosmosLocalizedRating.swift */; }; - C160B69E04B434983B14E0026C1500AB /* FIRInstanceIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D0585AA5E47C45F8B511D82C6D94CE /* FIRInstanceIDStore.m */; }; - C18F147933F1687438934F7C579D5B08 /* FIRCLSSymbolicationOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F1DBF2473A97D7ACF4EAA2DBE04C3FF /* FIRCLSSymbolicationOperation.m */; }; - C1CB05134C61365B653A56E298C8F2F2 /* FIRInstanceID_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F3B727CBE66CB322BE9EB4382AED89 /* FIRInstanceID_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C1CC47BAF761EC35B08B9B9A634728FC /* FIRHeartbeatInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E580ADF5E02AAA30BB60908DDEAF51 /* FIRHeartbeatInfo.m */; }; - C1CEE48914E9E024E8B0CEB770213299 /* GPBCodedOutputStream_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA113DCC26FB5C004C3D1E579B7A682 /* GPBCodedOutputStream_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C24CFF893AD4A23641E1EFAB25D608BE /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 66E3690C7FD0398FD29EB6C991B5B1C0 /* nanopb-dummy.m */; }; - C31F17F0D0042CF393C528BCBA7CFCBD /* FBLPromise.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 3EBD3A1A7B5988E26A3170AA87A6C66B /* FBLPromise.h */; }; - C3C34A910C2DEE4E35AE27371176DF68 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 400ABB1ACE6D802781D5E8D13DC991BE /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C3E377CD7CFEC1583F8C66ADAFEBD04E /* GPBRuntimeTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7076A43812D5FB95FEBE388D7CCBBFA5 /* GPBRuntimeTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C4B59D6C5045B15653C734891019ADAA /* FIRCLSCrashedMarkerFile.c in Sources */ = {isa = PBXBuildFile; fileRef = 780758F2A840C39D82F041257B97156C /* FIRCLSCrashedMarkerFile.c */; }; - C4CB4A4731C8355A00A3CB74256C0240 /* FirebaseCoreDiagnostics-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B6347938369655E1257BC31BC42D0719 /* FirebaseCoreDiagnostics-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C4D253F712CBDE088C2DF4975E3A064A /* Wrappers.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 7428D6B81D44FA3D20837B01D303F928 /* Wrappers.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C4ED4FC9C0F1A30DCD53FBDD94E18FD8 /* FIRCLSURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = DFD535381D0BF921CDCFB6383956524C /* FIRCLSURLSession.m */; }; - C4FAA5328A9E500CE29095B03CA5B917 /* FIRInstallationsHTTPError.h in Headers */ = {isa = PBXBuildFile; fileRef = 06DC596725F052D6851A9D913BC9859E /* FIRInstallationsHTTPError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C5B1F832B89684A3C5C63E7BE3F43A92 /* FIRCLSContext.m in Sources */ = {isa = PBXBuildFile; fileRef = C65B081187E922A0B90A445F6672724A /* FIRCLSContext.m */; }; - C5B8B7CB9C0A3075CEF1401A80CFBBDF /* FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D55D0B21D5134615C9FB6DF43A52C85 /* FIRInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C5FF2AB8E0AE0A3C708DAF194A811512 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = DB12EEF880A46EB1CA7FD05A685E614C /* FIRDependency.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C660A1B6B4EFDE2D4D2FA7DE1D42DBF3 /* GTMSessionFetcherLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = ACEC420CD79D412150AF06E59E334878 /* GTMSessionFetcherLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6AAE5B5FFD75CF33D6DFE320543F838 /* GPBUnknownField.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BAAE2807F7096752BFFB107AED235DE /* GPBUnknownField.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C6BB169504122E40FBC4EBB31C6A5D91 /* FirebaseInstallations-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EEF27E6B6AD9D0C498F01822C988A49 /* FirebaseInstallations-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C7158550434B8AB9E73238AE7C16D5D3 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C5E24EED8B8003A61F485263C9A9D8B7 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C78BFE0645CDD1C56379779F8408BC43 /* FBLPromise+Async.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 8B5D9FFC88CF8583B440A17D5F1C6E4D /* FBLPromise+Async.h */; }; - C7B1C00AC89BDDC408CA48F1F4DB35C8 /* FIRInstallationsAuthTokenResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8D11CF18E4B70C0361E6323D3A40DA /* FIRInstallationsAuthTokenResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C7E002BDEC06210D747F5794E7ED081C /* FIRCLSURLSessionUploadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = EFDEA1E617338F534B47C46BD1B16AAC /* FIRCLSURLSessionUploadTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7E58E836EF08FAF0354A175AF25D816 /* FIRCLSFABAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C0D23030E4CAA269EEF302C589DA27FE /* FIRCLSFABAsyncOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C835940AF2FF8796C3968267176793F6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - C98DDEB7DD194C2062560E399AB86C4F /* GULHeartbeatDateStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DDDCFD93630C1EB3C92D8D5304E19A3 /* GULHeartbeatDateStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; - CAAB19ADF464322EB4B968AD73722FBF /* FIRCLSUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACCBC89C99D609BF01757C4EC4BD55A /* FIRCLSUserDefaults.m */; }; - CAF9ECE96CFD4BEFFAF05AF598701D28 /* FIRInstanceIDTokenOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = FF52E871BD37790734EC0BFB570A1CCD /* FIRInstanceIDTokenOperation.m */; }; - CB1AB8518B97B6C5ACB96880FECD1C76 /* FIRCLSFile.h in Headers */ = {isa = PBXBuildFile; fileRef = EA44B8091E855FDD1C920BB1AF6A20EB /* FIRCLSFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB695ED2C426801DF4AE39D4CA036349 /* FIRCLSDownloadAndSaveSettingsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AD01007824C54540DB65EF94EB3607C /* FIRCLSDownloadAndSaveSettingsOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBC0251B91FB782E546434492F9A4D87 /* GDTCORStoredEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 155157D7F64D7D917D0C4E5F7613E7DE /* GDTCORStoredEvent.m */; }; - CC069B0287D9AD5428F0C35460A8DD33 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37E9C96A14308A6CF64520DC0FDE49E9 /* QuartzCore.framework */; }; - CC1884644EDC32A6B34DBE0608618504 /* FBLPromise+Catch.h in Headers */ = {isa = PBXBuildFile; fileRef = 282F89832FA8018FFB67B1D0E076A93D /* FBLPromise+Catch.h */; }; - CC34C3B11B59AFBD23A5DE261A05920F /* FIRCLSUnwind_x86.c in Sources */ = {isa = PBXBuildFile; fileRef = 445E4524C9DC66D2D8FE50C212E669E1 /* FIRCLSUnwind_x86.c */; }; - CC549B8A0B201698F3A78E67A4816542 /* FBLPromiseError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4170B9A0E6D64C8E5F469BF40090172D /* FBLPromiseError.h */; }; - CC84774020EB232FCE9261503FCC7CD3 /* FIRCLSFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 033AB68F190A55A86B819B7215636FCD /* FIRCLSFile.m */; }; - CCB101C566D789AE584F8F7A0191DB73 /* FIRInstanceIDLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = C9C5F7A7A2A8AC2737447DEBE827C35D /* FIRInstanceIDLogger.m */; }; - CCED35A7C673FD86DC9EAC30E6632299 /* FIRCLSDwarfExpressionMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E260648839D5419E4C43B93CB461BF8 /* FIRCLSDwarfExpressionMachine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD00F2CD56167D3B83E974884CCCC425 /* cct.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F1CC1C65EE279A0F3B36DB7BBEC27D5 /* cct.nanopb.c */; }; - CD51083BE83E5086CAC454575BBE37BC /* GTLRURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 975D71F8714322D59935E3C852F36F6E /* GTLRURITemplate.m */; }; - CD957EC7A09FEB439AC06A8ED76A7E34 /* SourceContext.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = B4051B1F03248C4D19DD499CECF9C811 /* SourceContext.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CE173BA31BB1843BC0CD957BF376E07E /* FBLPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EBD3A1A7B5988E26A3170AA87A6C66B /* FBLPromise.h */; }; - CE496F1D5A82AE2B965D07CF00B5F1E1 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A1869AFB1D2703DDFC7634663C008DB /* ConstraintAttributes.swift */; }; - CE5D26791A20611059F08D376C84C284 /* FIRCLSUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 600B6F83EF7B44500B98D24520380A70 /* FIRCLSUtility.m */; }; - CE72E4DA2A9B025008730110D40E41FD /* GTLRService.m in Sources */ = {isa = PBXBuildFile; fileRef = 462BE57535C2E8A8CDD7823F17692773 /* GTLRService.m */; }; - CEABDB5B9BB37C6A0625573B58524773 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D04EDA1D9D114619986D2421B288D64 /* NSData+ImageContentType.m */; }; - CEDB6283EC6177F8D18258E0721B0DBC /* FIRInstallationsAuthTokenResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B367AAADFD1377E71C78557E018B527 /* FIRInstallationsAuthTokenResult.m */; }; - CEDDB100390CA275D09FEC883188EB61 /* FBLPromise+Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = 950BD2AE277B9A8A1231A1885BD7B600 /* FBLPromise+Testing.h */; }; - CEE57C276D11FC9D72109A1759541770 /* Api.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = D560F208088F9C16347E6648692D6709 /* Api.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF0DA4B5612463DF0E22BFD8F0F5E21A /* FBLPromise+Do.m in Sources */ = {isa = PBXBuildFile; fileRef = 63353F24AA1808665111DD6D42739C20 /* FBLPromise+Do.m */; }; - CF2F900BB347A231F7ECC7C146BE7D7E /* FIRInstanceIDCheckinService.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5442B2959E743E3BF73F0E8FE053C3 /* FIRInstanceIDCheckinService.m */; }; - CF44CD5690A61D2637DF96F4924E36A1 /* FIRInstanceIDAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5E56083411168460263A3799967A46 /* FIRInstanceIDAuthService.m */; }; - CF61B12A16BFC8E7A401BBBEB84B907D /* FIRCLSExecutionIdentifierModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D17953EFDFF6E4BBCB3C59548D9231B /* FIRCLSExecutionIdentifierModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF8CDBB2A52937BC13EE558A9ECEAB7D /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 776B1FAC2ACEB5193D8B1576DA70AA01 /* SnapKit-dummy.m */; }; - CFB4AE72AB4672EA965BE682D67A1D7A /* FIRApp.m in Sources */ = {isa = PBXBuildFile; fileRef = D76D908C64B4D3331D7C42333FEFC67D /* FIRApp.m */; }; - CFD9E9ED39EF2DCBFFC7A4497ACD4EB6 /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC9535E0DDDA7F09B836C700D523820 /* GTMSessionFetcherService.m */; }; - CFF3D0C769DF8EC9FCF50AFAAC6EB43D /* pb_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 0984CA7F0E51A50B5E4C58E9791C6ED2 /* pb_encode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; - D08C6DD858FFC351EDB5C9FD1B33FB56 /* GPBUnknownFieldSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 74A583DD8F256F931A4779540288C809 /* GPBUnknownFieldSet.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D0B07F7C1871C98F112631A7AED78CB7 /* FBLPromise+Catch.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 282F89832FA8018FFB67B1D0E076A93D /* FBLPromise+Catch.h */; }; - D1A34DB5EBDAB56C6EB603AE69E249A4 /* FIRConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 623894999D2C7A036706ACD485E612AA /* FIRConfigurationInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D1FDA9FB7BCF8FC2C567E50657C4DC2B /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = DDC2CA508D1B6398276A327A4BF926D7 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D23E701CE0895EA28BCE2998C709127D /* FBLPromise+Retry.m in Sources */ = {isa = PBXBuildFile; fileRef = DCD00BDD932672D1A88C3BB8EEEEA3B4 /* FBLPromise+Retry.m */; }; - D292BE135EB02BDBE64EFA6E0A6E0BC4 /* FBLPromise+Timeout.h in Headers */ = {isa = PBXBuildFile; fileRef = B616C44669FB2DBFA8DB638065BF5224 /* FBLPromise+Timeout.h */; }; - D2D251729ED2AABDF2943BE10B4F22CB /* UILoadControl-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F0D2D4B878E192ECDA911312F1436ECF /* UILoadControl-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D3B5C45C4F5DA024FA10CDE554C2739A /* FIRCLSCompactUnwind_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 375DA008C108E01D23483CE9E823FAB7 /* FIRCLSCompactUnwind_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3D8C379C6E4FB487E5ABD6800AD7B7E /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43590C47EC6ACEBF58FF3B1C9583B16F /* DispatchQueue+Alamofire.swift */; }; - D40F6913696F1170B7B4FA2473D29B16 /* FIRCLSSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 76B5DBC9758F9E0F59265342FFA1D677 /* FIRCLSSignal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D4128F8426F3B36CA54A919111B3F829 /* FBLPromise+Delay.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A80868BA24C82AC0B479D107B4CF849 /* FBLPromise+Delay.m */; }; - D4132B4931ADB482C8DBE46E73557B85 /* FIRCLSException.h in Headers */ = {isa = PBXBuildFile; fileRef = 6412959C0EBCB040F4F6F101BBA6A24D /* FIRCLSException.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D4591E8EA28173EC6B86286E5BAB5BCD /* FIRCLSException.mm in Sources */ = {isa = PBXBuildFile; fileRef = A6BC6154B749D01976EDFED4892F71E3 /* FIRCLSException.mm */; }; - D4C596FB62E8985E2092619789B8A699 /* GDTCORPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D1D2BC98D57B6EB6D9C53A5531ADD10 /* GDTCORPlatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D4D6E86D29DBD0F0777C51FEC1796E55 /* GTLRDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D8CD930392A0C1D9CFD6E1113056F7 /* GTLRDateTime.m */; }; - D50133BDD1C5B65BF0100649338407B4 /* FIRCLSOnboardingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E62512A4DA50CC43D7A4D3C23406E65 /* FIRCLSOnboardingOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D55D066AB7BEC71F39DB7DA6532BA6DA /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F13C1B8CB53691E6EF4DB57E19D99531 /* IQKeyboardManager.swift */; }; - D5A296E1089C25DEBAEB6CCA6F6A4C5D /* FIRCLSDataParsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A4AAFFB42047DE5748C887E84260A7 /* FIRCLSDataParsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D607975BE346C1B9AAB620045DF93860 /* FIRCLSURLSessionDownloadTask_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = CE92C815E6AFDA4D30B939AADE7BF4FB /* FIRCLSURLSessionDownloadTask_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D6463EB2572E8092FFBAF0FE66F5E318 /* GoogleDataTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = E8CF2A9FE2D0DA1A690F5941F2AF780F /* GoogleDataTransport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D65C254F5ABF2CB5ECEE50FE8F8E1A80 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575C7DA4A08830693DD49C448AB0498E /* Response.swift */; }; - D65D184D38138D9F7B875C327A947C2E /* pb_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 802907C3F0AD86A91DFC92F5E2FBAD77 /* pb_common.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D663777E6347BA4C48AEB66118880F62 /* FIRCLSPackageReportOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 487CFE32B477A3010456AA421F166450 /* FIRCLSPackageReportOperation.m */; }; - D6D62A07688C23327472FE6727DC69F9 /* FBLPromise+Always.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 4ED9E03F79A89856F65FB0A48CB5CA70 /* FBLPromise+Always.h */; }; - D7CBA3EDCDFE3C3B7F793763A1EA4CEB /* Duration.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = B4F73073113433827EED13C099FA7563 /* Duration.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D8682B6F12C1CA9F9B7B638391629216 /* FIRCLSDataCollectionToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BCB8AB3C1D9C74B8D629978F586C43B /* FIRCLSDataCollectionToken.m */; }; - D8940EBD6593E05C23DB5EECFFBBC70E /* FIRDiagnosticsData.m in Sources */ = {isa = PBXBuildFile; fileRef = D3AC6A181FC59E47B0D65021B15BFFD8 /* FIRDiagnosticsData.m */; }; - D8C9AEE254765BF5A4ABED91137828AE /* FIRInstanceIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 8333818071AF76D91171108D74F2C2FB /* FIRInstanceIDTokenStore.m */; }; - D914F59F032740740507EC01F35EB4B0 /* FIRCLSDwarfExpressionMachine.c in Sources */ = {isa = PBXBuildFile; fileRef = E6FEE0247C04AB1CFED53E4C9A392EBD /* FIRCLSDwarfExpressionMachine.c */; }; - D941C23F4EE3E5FC6D81D78D3CA3BFA5 /* GTLRUploadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 13A714E71A154A8A4790324863DF9A67 /* GTLRUploadParameters.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D988BA80A6FCFF5954B8AABAE210508E /* pb_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 6733AA09988BCE4CB795C0D83FF88E9F /* pb_common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc -fno-objc-arc"; }; }; - D9B862C1A8D630E2AC20BA41DC458905 /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = C933DB82BF8D22E502795AFA968739F0 /* FIRComponentType.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D9CC0E6B7DBCACFD43A5B12A8538C544 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AE8D11AE60F0E1987211B8C3C234036 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9E239B2D23CF31A4733D5F30742F3C2 /* GDTCORTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = C5B94621C5C335C790753FE8D82B4D9E /* GDTCORTransformer.m */; }; + 7E86917B2BA5EAD4F531D0CD71ACFB73 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = B95DB0867FADA2A2F2F6ABC69ED6B384 /* ConstraintDSL.swift */; }; + 7EC8E8BC904C8DEEA88BBA95A154667E /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A10D6ADD3816381FB13D9347A47C6FB /* UIView+WebCache.m */; }; + 7F0104FC8CA9DD5BFCDCD352A488DD77 /* GTMSessionFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8672ECD58E76B351EB951B0ECCB6F547 /* GTMSessionFetcher.m */; }; + 7FA5EA80E726DC3BC864CD6C1CE923D7 /* GTLRURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = C10B9EBBC7A1D58A4C5188E6F8CC60BC /* GTLRURITemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 805DB1FB7F0AC4E0F311899EA6E00EF4 /* FIRCLSURLSessionUploadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 2430249FCEB29B6B2B00A0D14D1FC81B /* FIRCLSURLSessionUploadTask.m */; }; + 80DF20094FDF834C023993FD7E7B7CE6 /* GPBSourceContext.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 8654B4DBA111F6D78096F93A2B9C7539 /* GPBSourceContext.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80E27C07272DAFACEABBEA57E0AF5104 /* GTLRBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = E11889F61BF54A7543863C9CA7472057 /* GTLRBase64.m */; }; + 811DC8999094E7C4B11C3ABF801B94FD /* GoogleAPIClientForREST-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F62F329D2CC6476771EA6646536544C /* GoogleAPIClientForREST-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81393B44411A35759E116B55637E9AC2 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1AC6C255FAFDBFDE3F30E0AFD98718F /* IQKeyboardReturnKeyHandler.swift */; }; + 8163A006E28E8CE8211F8BF451AF181A /* FIRAEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 59D220520457C63E7FC5311B5DCE2639 /* FIRAEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8266F1C1CD7F16044E4EE3746F30D83D /* FBLPromiseError.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 810EA27159569FC56E8E1D02AA63AAA9 /* FBLPromiseError.h */; }; + 82BBE2E11E77F50D3FB1CE676198D375 /* FIRCoreDiagnosticsConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = 085F2D45ADC6B3C6B091D77E55A2B731 /* FIRCoreDiagnosticsConnector.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82DB400DFF18152E905CAB578E6D3D94 /* FBLPromise+Race.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C6830F4CD02F7D0DB40621054CC1ED /* FBLPromise+Race.h */; }; + 82E954CCDC8B0BAC5D1AACDDFEADAEFB /* GTLRRuntimeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EC9F0E633A955BB36BC139AE045BA /* GTLRRuntimeCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8315A97D1C193A0FD240B9C782711BCF /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 022C228464D99A818F61DB286DBF61B3 /* FIRComponent.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 83956E20859CDBBE7BC38ABADE0170FB /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6D60C2B48096DA88FF81E3B107E7586 /* AFError.swift */; }; + 855ACA5F1484F04CE7180AFEA2E8CBD8 /* GTLRBatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = BF709C7EDFF1535DD045158156303831 /* GTLRBatchResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85DCF5911184E1D079A0698F2986AD4D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 864A93EFB79C94038B756FF5800DBEDB /* FBLPromise+Await.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 9D3499ADEFE2D73B02FC8256C8701E25 /* FBLPromise+Await.h */; }; + 868326B6ADBCAAEF03692689C86E5754 /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = F09A3296168934638F64B46CF41995B9 /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8729BC234AF0903EDA0300C83273D29C /* FIRCLSReportManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F2023A98042AEF1DBD90E8C2EF24E975 /* FIRCLSReportManager_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8791E6BF34A8D048C1D3C4D37BA76E55 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 87A9519A551BAE32CDD8F126D7DB519A /* FBLPromise+Timeout.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E2A9B8190FCFF248D000813E9C3A884 /* FBLPromise+Timeout.m */; }; + 87D83A631A44B2AC874C0A8E6CF0569F /* FIRCLSFABAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F460FA308E7A4680AF1A2F1728D34CA7 /* FIRCLSFABAsyncOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 88ADB627F987FDE520537286C40D7A15 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92AF84D108A3ED39356D4684FEAF13AE /* ImageIO.framework */; }; + 88ADC8C8F456FC984A24D1FD4E1F446E /* GPBCodedOutputStream_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C58B91484E8387B29013766FA217BAEF /* GPBCodedOutputStream_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88DA2021BCE032AEB7DACB464BC95CD9 /* FIRInstanceIDAuthKeyChain.h in Headers */ = {isa = PBXBuildFile; fileRef = D9F8E064BFBA8C05C2508A8EA4CB65C5 /* FIRInstanceIDAuthKeyChain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 89001D3F23BDE18A854D6BCCDF764A53 /* FIRInstanceIDAPNSInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC360B47F0B7A2409CFAA057E8872A8 /* FIRInstanceIDAPNSInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 892E762FC95569CAC829C0F564BAF053 /* tflite_lstm_recognizer_latin_0.3.bincfg in Resources */ = {isa = PBXBuildFile; fileRef = 0214B19253ADE0303ADA5C9060E94E34 /* tflite_lstm_recognizer_latin_0.3.bincfg */; }; + 89368B569F49A14CA7608C65D11501D0 /* GPBExtensionInternals.m in Sources */ = {isa = PBXBuildFile; fileRef = 9900CE79B1DD2B7FC3552E48671AC398 /* GPBExtensionInternals.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 89587C7A9045CE1539B402ADF8B0D82E /* FIRHeartbeatInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B23CB0E543EF08826E83C2A1E39BFE84 /* FIRHeartbeatInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 899CAB6EB6C6B66A32F1BA528AEEC589 /* FBLPromise+Timeout.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = DC16E4F27681F35EEDF46A2DFA567022 /* FBLPromise+Timeout.h */; }; + 89C8DDAD106B9362208FD595A3643372 /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A555F2F8B8AB6D50F22ED7F53CDF9B4 /* FIRErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A15AD63028E403CAD58B957E015987D /* Timestamp.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = C757ACAC1FCD254EB154071DBE8D2185 /* Timestamp.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8A475A6A37AD562FB1F6F76C8E7E9AEF /* MarqueeLabel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8956CF579CF6834C76ABCEC5EA8DFB4 /* MarqueeLabel.framework */; }; + 8A5A1CD9AF63C0B4BDCA9CF53AA6F09B /* GDTCOREventTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = EFA3424CBDF3DC062C59A533A9AD3640 /* GDTCOREventTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8A63B135D38EBFEE29036A40F849A1E7 /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 23347178C70E04D5133F478E0C1F89E1 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A7DC3C572BA8FA33B83ABA33B77C674 /* FirebaseCrashlytics-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C3306D4A62F64B9DD21462375FAC9DD1 /* FirebaseCrashlytics-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8B6698D463DFF193B10BD4DD643BC374 /* GULNetworkURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B8035530847BA363A559EA8C21A565 /* GULNetworkURLSession.m */; }; + 8B7010FE699E439C829FE5983843C41B /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = A712A28C24749F579E69E51F8D67721D /* GTMNSDictionary+URLArguments.m */; }; + 8B845C12A7138DBCA9EFE6FEF15CE10C /* GPBAny.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 426F52056B0B731806A0D5E1D71DDDE8 /* GPBAny.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8BC2F8A9299B2E08723AC8B88AF87636 /* GTLRFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = A73B3B6C8EDFD43712C652F666FA03E1 /* GTLRFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8BF86037EDF057C8E6D6C9DFFDDA36A3 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = FCA3A9B67E505A3E07A808F66562CB4D /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8C76436DCF9A6D66F765E541729B1C0C /* FIRInstallationsLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 351DCDD88F92BFCA28E942CD174FFC26 /* FIRInstallationsLogger.m */; }; + 8C80818FD7C49986AE24BA4150388D54 /* Popover-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B40445679FCB9DC4084E9B3A02F6009 /* Popover-dummy.m */; }; + 8CB0A66EC6C15D0B752BE9074CF91C34 /* GPBEmpty.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 80FB1D46BB629B394B2A615786EEEF69 /* GPBEmpty.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8CC2218B480DA0CD72829A5C4AEA8929 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC4687D00B3D316451650489A4F72517 /* IQInvocation.swift */; }; + 8D01427E5BDA75BEDB6E83A74B3568DA /* FBLPromise+Retry.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 1A7E765E557A0A9DEE90E31AE71B25FE /* FBLPromise+Retry.h */; }; + 8D19870890003DDE06BCC4337AF7A815 /* FIRCLSByteUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 76414CC873057FD476FDD94C2DB11D64 /* FIRCLSByteUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8D2E802B355DAAA378D6CFB98DAC18A4 /* FBLPromise+Do.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B396839D10A8ED82F9D975D557A05DC /* FBLPromise+Do.h */; }; + 8D5D533D895F08B5A65B05525DC7DE69 /* firebasecore.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = BDDDC0609E2C2399052E6A816A1F02C4 /* firebasecore.nanopb.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D9B945F0AFBC1D1097696AB22F99BCF /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = C2E98EC05769543C0D402ACE95405C39 /* SDAnimatedImageRep.m */; }; + 8E1C27AE068AB24A24FD96AB182A0768 /* FIRCLSDemangleOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 82AEC7673FE2BE0C66FE5785EEF5D16D /* FIRCLSDemangleOperation.mm */; }; + 8F0FE9FD26E9585F404B7A6760D7D3C2 /* GTLRVisionObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = CD6FD85142C2A91F5EECBA1503EF722D /* GTLRVisionObjects.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8F1377E55120A526BCBBF4CC7892B50F /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BF5710ED1344E425B0C831ABE6C9BB9 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8F339918750E6D1E0B15B431A8009B7B /* BannerHapticGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F465778F3F0D0FC55AB567D52E7D49F4 /* BannerHapticGenerator.swift */; }; + 8F499B2A45C5DA77D7B8F4F6F8175BE9 /* GULSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B8D689EEF366A0B62A1E0B85529271C /* GULSwizzler.m */; }; + 8F70E70E64F899537D38A1F79F8D57B5 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9ED272E5C44F9CEDB513CA53E70C0B /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8FF3103B0905585E894AD5DD5465FCC0 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5DA0BBC9268CE131BF23F7FC770D010 /* ConstraintLayoutGuide.swift */; }; + 90283F10E5A2479476F7ACB241A26C1D /* FIRConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E61A190AD0C18E12D2BFC70E264C3DED /* FIRConfiguration.m */; }; + 90772D3E0A4156BC36CDDBCEBF9B4405 /* FIROptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F1AF55FFEE3A1788A1BCE03AF1733F6 /* FIROptions.m */; }; + 90779A60B544C9AA1E3B7C85DF85E8B2 /* FIRCLSContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 774913319449F64C85BBC4F9713156ED /* FIRCLSContext.m */; }; + 90E7980DCFE7E98D08F482AEDEAE0E60 /* FIRCLSURLSessionDownloadTask_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 3357A790B3FCE7B8CF729F3CCA00ADCB /* FIRCLSURLSessionDownloadTask_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9133BCB79AE47075A8033146775B5655 /* FIRCLSFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D3B3996DF8B175D6C102943B1287C2C /* FIRCLSFile.m */; }; + 915240BB603BEE11819A86490042A27A /* GULSceneDelegateSwizzler_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D5C86AB66DA041F43C4AD5F87860595B /* GULSceneDelegateSwizzler_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 916433453A62D8B28D64D39A72B7AC0A /* FIRCLSThreadState.c in Sources */ = {isa = PBXBuildFile; fileRef = 41F384B456FBEA8577A41BC89D7FE31D /* FIRCLSThreadState.c */; }; + 91EB2CCF13F0AC597561F7F77A771A43 /* FIRInstanceIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 21D290B09BE53B6F496BCE35678618EC /* FIRInstanceIDTokenStore.m */; }; + 925F54A0CA3AA62E69CA2BF57BA18E6B /* GDTCORPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 139B329630BBF9CED91B62FDB1D7E229 /* GDTCORPrioritizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 927A389CEE4DB476CD30B6814198B555 /* GDTCORPlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = C7C3F6AF0D8BABE7FDC8712B1F5F1579 /* GDTCORPlatform.m */; }; + 92BABF0B92ED682F20A7700295A47F14 /* FBLPromise+Delay.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = DCF6E8B5148A695EE74ED2CC323747E0 /* FBLPromise+Delay.h */; }; + 92E7EBF062AFFFBAED44ACD987D2D9FE /* FIRCLSDataCollectionArbiter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4034D36FB86CCC529959CE4D3396FF85 /* FIRCLSDataCollectionArbiter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 92E8DCC5A2A1B21E6F558D6584C07B94 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 931BBB8230A25161D5C37528A8F9FECF /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BF4231CB348100C6ECD88B8C674E5E7 /* SessionManager.swift */; }; + 933FDA5970AA525D6CB92BFEBA2BAB4A /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F1263D57D1E5E2E1C6595C7C6F0461 /* Timeline.swift */; }; + 935AF5A81540D3302EAA88E30C8CEAFB /* FirebaseCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 280269965A1B9153D4595919905D1C32 /* FirebaseCore-dummy.m */; }; + 9361C9E4EDC43E6560D96F53E24CBA32 /* FIRInstanceIDURLQueryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8797C65FEF6128853675EE8DA627208D /* FIRInstanceIDURLQueryItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93FB5E975E3A65DC24D965E0E489BCE2 /* GTLRObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 5227C185BE46B518E07AEA0C5FECC882 /* GTLRObject.m */; }; + 94962BB3AE8B79C7569FD67AFD0756AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 949748DB22531973D1840468C67985B1 /* FIRCLSURLBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = A84C766D1FC02C74EF4A30F95DF67671 /* FIRCLSURLBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 94A568E571BB168B351847BA0139E28D /* FIRCLSInternalLogging.c in Sources */ = {isa = PBXBuildFile; fileRef = 2271A63D75EF710B86F55696070BBC39 /* FIRCLSInternalLogging.c */; }; + 94B6E4F1587818BDE74C9F326BE8E806 /* GDTCCTPrioritizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F01BB716557B9777A7EC6359C0EABDD /* GDTCCTPrioritizer.m */; }; + 94C06216ED08CD7FB88C76743C9E4F62 /* GPBMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 24265D8A92D0D8109DDBE73F5D11A708 /* GPBMessage.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 94E39972ECFA083B97C7377AC1E42015 /* GULOriginalIMPConvenienceMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E2A64802F57405C03231A3AB3F56723 /* GULOriginalIMPConvenienceMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 95314A630DAAA84BCC1E3CF53F38D7DF /* GTLRBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = CFC760F59509EB5504CA40112221FE9E /* GTLRBatchResult.m */; }; + 9573DD26C30759D093E094F190432DCE /* FIRCLSMachO.m in Sources */ = {isa = PBXBuildFile; fileRef = 9495F4577ABC143ABDD144F27F5B2D68 /* FIRCLSMachO.m */; }; + 95B94C113B34B070BC67A81FE19BB447 /* FIRCLSHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E21083AEF6081819F2618C954D99923 /* FIRCLSHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 964238ADBDFA975C3756A8C0E06B4758 /* FIRHeartbeatInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = AAC40467721C333F59A071097C7B805C /* FIRHeartbeatInfo.m */; }; + 96737DE686E0CF06C96CF44075C1458B /* FIRInstanceIDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 92F6F64572542B77B8D39D106E5AB4F2 /* FIRInstanceIDUtilities.m */; }; + 96ABD3F0CACD83EFA49F28F1DC26F77C /* FIRCLSMultipartMimeStreamEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = C32B9744EEA882FB2676F3F71A20DDE1 /* FIRCLSMultipartMimeStreamEncoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97B5CF51E1CA72ED599CB58B057DCB22 /* GDTCORRegistrar.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC270E7A37E28A48C912291F69B3A50 /* GDTCORRegistrar.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9871706677F9DBC01165A82680064B66 /* FIRCLSAllocate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B1FEA138966D673C514A5CB0D1E3655 /* FIRCLSAllocate.c */; }; + 98A929C8E9012AB167672714FFD2113C /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C838576264BE57CFC548015E8C842CA /* Request.swift */; }; + 992C11E69C43C01D6D0A2B4260EE5EAA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 9947CAF1AF4BE62F9304A7CF62F33E1B /* FBLPromise+Delay.h in Headers */ = {isa = PBXBuildFile; fileRef = DCF6E8B5148A695EE74ED2CC323747E0 /* FBLPromise+Delay.h */; }; + 997E5473C846F0A7F1A2372C1BAC440C /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 226F71F6381F7D176D1C56BB6F6DBEB9 /* ConstraintLayoutSupportDSL.swift */; }; + 998EAA3DD9B32FA57D1F354E7DF86718 /* cct.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = 421E8CD0D056D0FA62150B7DA2AE9363 /* cct.nanopb.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 99E8F5AD2B58754951AFFF9B42270499 /* GTLRFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = B07900E59D71AD43916C73EA2ABEE914 /* GTLRFramework.m */; }; + 9A72CC29125BE4CB0495DA500D5083C0 /* FBLPromises.h in Headers */ = {isa = PBXBuildFile; fileRef = 981BA27C443D0904CCD78DC91BB6BF4C /* FBLPromises.h */; }; + 9BCBD44CC87277157BD819D84D62B97A /* FIRInstallationsErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 91A288EBF5C19454FD6F12A6D197B803 /* FIRInstallationsErrors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C06DC49C8F2006D0C9932C7C77D5060 /* FBLPromise+Delay.m in Sources */ = {isa = PBXBuildFile; fileRef = 613E7047E63294E42126DF366B0A062F /* FBLPromise+Delay.m */; }; + 9C08BD3951E9578DE1D418A263F28A3E /* GDTCORTransport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CAD568BADDA44EAD0FC34F8A5248863 /* GDTCORTransport_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9C17F1D394A766108645FD5562E8A2B9 /* FIRCLSURLSessionAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D81997EA728A275415F2B3408377FE7 /* FIRCLSURLSessionAvailability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C4903EE07D309DD1C1B37828DE528FC /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CAF62102263E5AD92606E5EAC91D7B8 /* FIRComponentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9CBBD2A506FAEF88F1C31C39B2C9A09B /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEE9D298AB277618B1DCAE3DAED0E9E3 /* ConstraintRelation.swift */; }; + 9CBEBEC4E1234707D1C33F8B080B7DA0 /* GTLRService.h in Headers */ = {isa = PBXBuildFile; fileRef = F5299AF67E4B99F986EEAC776BFCC7E3 /* GTLRService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D1B7E78822E4D50A69D828AC20028CF /* GDTCORDataFuture.h in Headers */ = {isa = PBXBuildFile; fileRef = E15836C6C0A7AA69F0A8B4C5EBE84C83 /* GDTCORDataFuture.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9D426CCB4102050C45C9FF5367F57666 /* Type.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = A94758F71CB3AADAA52AD0491E12E3EF /* Type.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D60235277EEB2A0A45939E8F09A7D71 /* Cosmos-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 27BE3A733B9543E81E022A89F6FFF3DB /* Cosmos-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DE103C8DF0FCDD6B69AD0E4F465AE50 /* FIRCLSURLSessionDataTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F070582E7965E9CC4E800B1407041D1 /* FIRCLSURLSessionDataTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E17A917A7529FB66C49B09C7F615A06 /* GULSecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = DD999AACFF9278F187D89B97853E5A60 /* GULSecureCoding.m */; }; + 9E30F3E02C11EF2629AE0B9E7D139D3A /* FIRCLSProfiling.c in Sources */ = {isa = PBXBuildFile; fileRef = 8F519A3D6C9B6155E3B037042374F12C /* FIRCLSProfiling.c */; }; + 9E707FD22D837E8B33A94CE9E90ADC1D /* GULMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = AD72DF0AB7CA22F97B2B2CBD70034903 /* GULMutableDictionary.m */; }; + 9F5640657DA2CE1775F92DB0AFB96EB1 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B6EF8D3F0368EC84D4830CA7EDE09842 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F5D3E7FC94DD4D3BC8E7C5F32FACBAF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + 9FC7AC1DC13110EAF043982DAEE0C64F /* GoogleDataTransportCCTSupport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 30699B4E727D50E4CF098A743DCE2EC4 /* GoogleDataTransportCCTSupport-dummy.m */; }; + 9FF286FA0B970B8406ED89238F08B1ED /* FIRInstallationsAPIService.m in Sources */ = {isa = PBXBuildFile; fileRef = 012B7B072C8AF52B9B6F688EE6295564 /* FIRInstallationsAPIService.m */; }; + A06586F6C95F5672F87CCE76EC1C03DA /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B4B90F4759A59FDEB7D13017C7F8E7A7 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A0B7C78520E084BF74056774DD68190A /* FIRCLSHost.m in Sources */ = {isa = PBXBuildFile; fileRef = 74758E69FF604F810D52208123165409 /* FIRCLSHost.m */; }; + A0CB058C98C779A20F880EF36548E8A4 /* GDTCORTransformer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 205BC90A49F80DF580E56C108FA87694 /* GDTCORTransformer_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A0E7562E696BD40E4D86232FFC137CC5 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 90750149A0B4986E330696CB6D9140D7 /* UIImage+ForceDecode.m */; }; + A1277CC1A352417EAE0297A7B7009CDF /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 986228CEF2013BB0B61F0696573D49C3 /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A13C7A2B10A474C5F2B55A8757DCC4F9 /* FBLPromise+Catch.m in Sources */ = {isa = PBXBuildFile; fileRef = C368C4AF1BAE18F2438F780F28AC7CBB /* FBLPromise+Catch.m */; }; + A168F259B9F6A82D020E48A79C6E9D5B /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DEA7BD494E8985710E6F5511D86D43A /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1732B77F603CE8FD72D7021BF425CDA /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = F4D7D07D3755EECAFC2BA94C4C7C410B /* FIRDependency.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1D8723888732EA2F4BE8F3E77D8A5B8 /* FIRInstallationsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 09F85045316C1F9717FA620B775E3098 /* FIRInstallationsVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A2195480FD04EAD347BB54512D60F925 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AAAC4E1CEA86B11DFFC6B6267516883 /* UIKit.framework */; }; + A25F191AC7F1CB7F22DE2BF1B543EF85 /* GDTCORReachability_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E7BE7E52F9753DF02532199A1ED22365 /* GDTCORReachability_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A268B6C143564C4BC1DA969D489EEE3B /* crashlytics.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = F670E83C6CB2B67137E070B3D0C25512 /* crashlytics.nanopb.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A2A8019845628D37C33AA55311646EE5 /* GPBRuntimeTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DC5DF27D07A485C536A42E827F21FFEA /* GPBRuntimeTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A2AFCD2E8E0E1037605A01E4E2CA5631 /* FIRCLSURLSessionDataTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 81EC71702E7F4D2BC0DCB968EA902170 /* FIRCLSURLSessionDataTask.m */; }; + A2DBE42806EEFE43D250B350A1A55E9D /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAABA1152FEECDC18858D8E1A53F644D /* ConstraintInsets.swift */; }; + A2EAC86DA99E890B856A0F28CE3629D5 /* GULNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = D27FDC8C66581F6C12A0E72B0DA64D91 /* GULNetwork.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A366727FB650651ACE4D43416A86B5A3 /* FBLPromise+Always.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B3391BB00CBE605D3C345A721C9E149 /* FBLPromise+Always.h */; }; + A3924FFDB3825F2C3079A829F4BE8CAC /* FIRLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 583AFC6ABE4B81426C75F5352BFA117E /* FIRLogger.m */; }; + A3DE5187A95886D2917E39169B1F2FE8 /* GPBUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B873FC591A968B4FF2843287B360CFBF /* GPBUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A40F788E2995B6A83BAA7E55CE7EB30F /* FirebaseCrashlytics.h in Headers */ = {isa = PBXBuildFile; fileRef = F12E2DA40E999C9F23665847A72D9499 /* FirebaseCrashlytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A438AFF3822AD218220EC9AA38479324 /* GPBUnknownField.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD8EA51DCA114E670593F70F7DABA5D /* GPBUnknownField.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A4AAFD1C3432EBB7948E1B5DF03943CC /* FirebaseCoreInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F451E7C07367BCE2D34E10AEC4F600FC /* FirebaseCoreInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A4B26F9C0AD28AC8629E03B084D58153 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C63626B0A12B8A5A1257F74CA8438C9 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A4D4B036C3C141617802D35E4806FA10 /* FIRAnalyticsInterop.h in Headers */ = {isa = PBXBuildFile; fileRef = FCD00C1A1990994AF5696D9F392C070E /* FIRAnalyticsInterop.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A4E126B5ADDC3488CC269071257B03E3 /* UILoadControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BC40E80DBB9A0521345A59482078CE8 /* UILoadControl.swift */; }; + A4EA38AC060DC6DF8B1F17C91515D7ED /* GPBArray_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B6B47AB5107B86998E47F57D031FF297 /* GPBArray_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A4EEC50B476499D7774479ED700B7CAA /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 57F2DE8B50EBB150065C90CDDDBF2D0B /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A599F640519D3964E617484B60B5E386 /* FIRCLSNetworkResponseHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B093F0B2504894585ACA8E9F55C5A52 /* FIRCLSNetworkResponseHandler.m */; }; + A644CA57CF8796AD0C18126F47606B13 /* Wrappers.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = ABCC74246F50C40370F53276FC1EB614 /* Wrappers.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6ACF3873DCAD3FCF1A773074ED922FC /* IQKeyboardManager.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 6B6C6CE99D456B44806EBB2033AEDFC6 /* IQKeyboardManager.bundle */; }; + A6E7C58E58AE42E14B07F7F3C45F11D6 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F59C252750FD6059166EEF6BF3260FED /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A716BC37C088D963D43C857BDB36AB9C /* GPBUnknownField.h in Headers */ = {isa = PBXBuildFile; fileRef = FCDD0289C506918952123492F6B43E34 /* GPBUnknownField.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A748948172E121292D77B6747A8A62A4 /* FIRInstallationsStoredAuthToken.h in Headers */ = {isa = PBXBuildFile; fileRef = D02F7687CCC6F6A2772F9C0CE8D9D047 /* FIRInstallationsStoredAuthToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A764898FFD748FA354D0341FC915CA95 /* GPBCodedInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A9E4CE72CE695EE466D31010F4C1319 /* GPBCodedInputStream.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A7974A9269835209CA8EAA2A139C63AB /* FIRInstanceIDTokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 062F240D69FBFD870897B26AB513C43F /* FIRInstanceIDTokenManager.m */; }; + A7A63053E96D0B97E60516D58431E14B /* FBLPromise+Reduce.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A3EAADED365A5D093DF124F6CEC89B /* FBLPromise+Reduce.m */; }; + A7B905E2474B0D359D484C5905A7C1D5 /* SnapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEEAACB4E59FB1E322EAC766AA494625 /* SnapKit.framework */; }; + A7BACE71AD702974F7D70CE61F23C1FA /* GPBUnknownFieldSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 85EBBA77A88452ADC33D50D8289AD5A2 /* GPBUnknownFieldSet.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A7DE4FDCE919FA50F413D4523616F1D9 /* GPBDictionary_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF7A8FA853345B37488A1F86C765AFC /* GPBDictionary_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8040F977D227855568C39BB006F8EF3 /* FIRCLSAsyncOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F164DF0E7AC44316CDBA4A163407EA66 /* FIRCLSAsyncOperation_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A81C819F68EE28575D0D742C0FE3CB1A /* GPBExtensionRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F0B41374FCA9A698C3E43E85BD7B570 /* GPBExtensionRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A871401A1422B0011853E2B34A8771A1 /* GoogleToolboxForMac-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 58274F331D9C31E12572CBFC758DE15D /* GoogleToolboxForMac-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A88B6C394E6D2D5E6136513631D73082 /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = FA38C8E3E480D656319A79F633FD29D3 /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A8C871899F00C949883305D95127D17B /* FIRCLSDataParsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B38628D423864B7C8751CDFF74B6964 /* FIRCLSDataParsing.c */; }; + A8E9F3FDBA4A379585660CD123974DF7 /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F66E69732C725336DB59E668627E99 /* SDWebImageCodersManager.m */; }; + A99CE6F0B0E59154225004911A006BED /* GDTCORStorageProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 88E8FA21C2C995E2DE375A77D940797E /* GDTCORStorageProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9B68AE9FFF353DF35CCEB1ED99323D8 /* FIRCLSSettingsOnboardingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2125D1A39786B0D5853D55291445F /* FIRCLSSettingsOnboardingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A9BB7D80574B8EA9D154BC4E62C9005C /* FIRCLSProcess.c in Sources */ = {isa = PBXBuildFile; fileRef = 40CDB95F6435D9563A215A70C47FA5F8 /* FIRCLSProcess.c */; }; + AA55C43B1B7DFCC38321F386837D054C /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B5FC07BD00B9FB747E527E791B798460 /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AA7D13221EB14F368F2C955E390A1D58 /* FIRCLSProcessReportOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B70B946FA466D66B5DCEDD50D3E651 /* FIRCLSProcessReportOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AA8DD5C562015338CF11AC208EBFB9C4 /* GPBTimestamp.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6636ACA2BD2F24F49E9EFA5D572A9BAD /* GPBTimestamp.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AAEC4E8E861510E4F35A93F904E280ED /* GTMSessionUploadFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FEB30EA412FEF9376DC8F0CD6097C03 /* GTMSessionUploadFetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AB0D4564CF19EA65A4CC94394639E4E0 /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E12920AD2C9BBB65245D36939FF49E /* FIRComponentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB981C0FC46FB980C8EC8DF2E0B6D400 /* FIRCLSAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C27518B9F8E142F75D550A5AE2A6949E /* FIRCLSAsyncOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ABCE8B463DDCC5131505852CB6335DF3 /* FirebaseInstanceID-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EAA480CF461DC57ABAAAC0E2447C527 /* FirebaseInstanceID-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ABCEBD2544608155DC10BD2E8D936027 /* FIRComponentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 48DF30206279FB72BE451C4FB90B1A6C /* FIRComponentContainer.m */; }; + AC366E37F3C5BB2C5BBE7E3CCAA5B735 /* FIRCLSBinaryImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A76A7453555132D0D27D17FBF2BF81 /* FIRCLSBinaryImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC55FAE9E941369EDFA135FD5EF4B3B7 /* GPBUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = BF9698F082CDD6898BACC2EB9410118C /* GPBUtilities.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + AC5B87A4BE71F075BE8A947CADFD9D26 /* FirebaseCoreDiagnostics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A6BCDD11117CB1DC2249A03FF8D8205E /* FirebaseCoreDiagnostics-dummy.m */; }; + AC6F0470ED92512330C23C92EA64ED3D /* Any.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = A363A85ACEF996CE582274C3F422B54E /* Any.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC7DAE5B261F8CDE268794A1B7B06F56 /* CosmosText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 449799DC12BAD1B71D211BB154255248 /* CosmosText.swift */; }; + ACB12D4FA59A0A0516BB24E6EEF8AC69 /* FIRInstanceIDUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = E2974F80DFEBFA5B672E70DE29E3A817 /* FIRInstanceIDUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD2E2547EDE0B60F20301F24C58131C3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + AD6F6743EA3BA867185AD3B9A4B3E3A3 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7797E42C4F235E88A5D752724D0AB04 /* ConstraintOffsetTarget.swift */; }; + ADA9E4C9BD8465AA5B51E91755BAFB40 /* FIRCLSProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E9911338755448EA3B176EB0257E204 /* FIRCLSProcess.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ADE8E38AE2FC314562F857E3D97467C4 /* MarqueeLabel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C4C091C5640211AC0377400F24710CB4 /* MarqueeLabel-dummy.m */; }; + AE1655BDAE27A36F9F32B18E77EAA8C5 /* FIRCLSUUID.h in Headers */ = {isa = PBXBuildFile; fileRef = FC38F2F91A70E7303B5FD64627CFA66A /* FIRCLSUUID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AEA5D1FDAA3FC539B584D83B1B32EC66 /* GULHeartbeatDateStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E43AAB91AE6EA1AF5A823D156A01F66 /* GULHeartbeatDateStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AECF17258641577728FB7D2FE5DD47C9 /* GDTCORLifecycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 17ACDB5A1C70A76D5BAFEDC4DFAC77F1 /* GDTCORLifecycle.m */; }; + AED2958984CCA20BA9DD16F467E341D6 /* GTLRVision.h in Headers */ = {isa = PBXBuildFile; fileRef = 49FD7BE32233BC859577783DA76B75F0 /* GTLRVision.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AEF39B2D1FEBDA6CAE66280672BC1722 /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = E0E3B79FB416677F192AD6676762E387 /* FIRComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AF2FDDC3B21B686612AC1DC1AA6BE5CE /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 8758FE286402A950AE1FBC87E6F4C4AC /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF8131C8943A1B0AF0F2F63CF7B48B66 /* FIRCLSSymbolicationOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3100F1B54F03053633365214D6F06F36 /* FIRCLSSymbolicationOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AFC64B1097F7355FF423D6A73E9C7210 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBDD7A7DE14EEBF98608CA1B8E696BCB /* TaskDelegate.swift */; }; + B074FA9220AC97C030DC11B0F59127CC /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2714913F1B548FBE2E8BBAF940D91087 /* ConstraintView+Extensions.swift */; }; + B0AB26436395AEC9556596DB2EDE4054 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite in Resources */ = {isa = PBXBuildFile; fileRef = 13D19DD605D444B64502AE7B2FDFF421 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite */; }; + B0B066097EB942ED648143CF3E2566F6 /* FBLPromise+Validate.h in Headers */ = {isa = PBXBuildFile; fileRef = 246B1E9BF647DAA3DABD8B123FD387CF /* FBLPromise+Validate.h */; }; + B1037CF0F757B9F79FF21EAF28ED5C80 /* GULNetworkLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 01EDE9B311CD2D4884F6DD85A225D330 /* GULNetworkLoggerProtocol.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B17C72612C27C9A77AAB7318B92C97E9 /* FirebaseCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CC9A84D8A8E84F61DF89AD3CDD5B556 /* FirebaseCore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B18BB5C3F49BA7F111B1B387D1155768 /* FIRInstallationsAuthTokenResult.h in Headers */ = {isa = PBXBuildFile; fileRef = A8F919B1A184845E1AB792C8C642FB48 /* FIRInstallationsAuthTokenResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2144C79FE5BF6918B51092FFD6DD2E2 /* FIRCLSUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = F3FD421B015E2E19354E67775DAB53BC /* FIRCLSUserDefaults.m */; }; + B24AC664E3CD8E3CE99820F8D9EDD590 /* FIRCLSException.mm in Sources */ = {isa = PBXBuildFile; fileRef = 590DFE5AF4CE25711548E5DB6B16D0BC /* FIRCLSException.mm */; }; + B24BAB76B23E5B2FBCCAEF0A70B9D173 /* FIRCLSdSYM.m in Sources */ = {isa = PBXBuildFile; fileRef = C1770C5FC3AC59BB9A0452DAEC111D36 /* FIRCLSdSYM.m */; }; + B316449E26820A2F230FCFF3549B6B8F /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE5AC455B4B84BB10325AA6D5634710 /* FIRLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B3D5E1407586ECB0691CAB7D494F2EA3 /* SDWebImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 875E9BA7ED0D7702086CD9C80EA12079 /* SDWebImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3FD615AD1A38ABD7071E2BDF2DDDAC7 /* FIRInstanceIDVersionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C4F8E5F63541B72A18CB5DEC232976 /* FIRInstanceIDVersionUtilities.m */; }; + B47EBE8E6F312164E7E1EDFA131C3B9C /* GDTCORClock.h in Headers */ = {isa = PBXBuildFile; fileRef = C7624AE339E6677CDB95C5CF481B90ED /* GDTCORClock.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B4EE72F79CAE8A2D37FC30B0EE2788AE /* FIRCLSReportUploader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D35AD3836F74474711E6CCE4AEF4F37 /* FIRCLSReportUploader_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B50F3505AA0550A7DC2F15572F672688 /* FIRCLSMultipartMimeStreamEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8ED60D50090167B0FEC10640B8BC352D /* FIRCLSMultipartMimeStreamEncoder.m */; }; + B594E04185C4C7522C612C631B8AD97A /* Cosmos-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76549F1AD8969CC7F609E36419CFFD46 /* Cosmos-dummy.m */; }; + B683D86F4271BC4CC2E75F6D9AD38FE4 /* FIRInstanceID_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B23DC49D34EC9FA684C3D91AFB928E /* FIRInstanceID_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B6B08D7ACBCE50C4C3B9D6E48DBB8CE3 /* NotificationBannerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A15557175136F268BA1D5E803768BDD3 /* NotificationBannerSwift-dummy.m */; }; + B728D0B8FD4F61366B08F0286D1EE860 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + B7829FC91D5DF2BD63889DBBBA40CB1A /* GULSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ED564152214B5367A9329BC2EA59F8A /* GULSwizzler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B7D71076091D7EB3DEC868B0C1FFFA03 /* FIRCLSOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 49D9DA598C6237019E3D9F51D1D43F93 /* FIRCLSOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B863578CCA37F3F02503B9612D406327 /* GTMSessionFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = BFC87053382666919FF291B7F579093A /* GTMSessionFetcherLogging.m */; }; + B87CE6FFB11981A69597EF3F74E65573 /* FIRInstallationsItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 917C9095F5816662AFF0746F13A97D50 /* FIRInstallationsItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8A083909999C725CB5D504F6B11C3D1 /* FIRCLSDataParsing.h in Headers */ = {isa = PBXBuildFile; fileRef = DCACB47FDF1B319F6E056FDD9985654F /* FIRCLSDataParsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8B70DAB160593E2878AD868EC470C8E /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D13EEB6AC5D6A59BF6CE2466EB746541 /* SDWebImageGIFCoder.m */; }; + B90894D85EA58B057AFB268344DD7AB9 /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 54930AF3B8763427DBF26A17AE1A8B37 /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B9ACDF1DB5E69751026E08CA8B3B4B7D /* GULKeychainStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = AE6F3DC19988998C45D91E4808E3EEAA /* GULKeychainStorage.m */; }; + B9E702E84151F4D198A859C11E942FE8 /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA25900D804AA753A5477197C443259 /* SDWebImageTransition.m */; }; + B9E81A12FDB167D79BA19105619E3F3E /* GTMSessionFetcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C89C537DCF620E7C31B5E37533C41E3 /* GTMSessionFetcher-dummy.m */; }; + BA418C7C6D6A81D48129B087933C86BD /* FBLPromise+Do.m in Sources */ = {isa = PBXBuildFile; fileRef = 712ACD10E77716CCDEF502846A0E93A8 /* FBLPromise+Do.m */; }; + BA8BDC327CB859DA79F1AC47882B9565 /* FIRCLSRecordApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A791692A887AE75F755F5700D7AB048 /* FIRCLSRecordApplication.m */; }; + BB1877BC8B97275A201E2D8E937BE623 /* Api.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DDD2114F9AA896977F2B67BDC0AFC19 /* Api.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC2362E084FC2F3D1403F395E43B2AE6 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CE67C85F5535F874E0D491B50DC8351D /* SDWebImage-dummy.m */; }; + BC44FF745D55FDD2C3CEE77A9DC14B44 /* FIRCLSCodeMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CB67EAC5BE239BE3E3BF3F5A46C4E6D /* FIRCLSCodeMapping.m */; }; + BC566A4F874A6283C184DBDBBF0C2A17 /* FIRCLSPackageReportOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 40AA22A8260E599CB7D3135966CB9985 /* FIRCLSPackageReportOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BCA3B1FCCE17DE10C20BFBBC03F97234 /* FIRInstallationsItem+RegisterInstallationAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 99A8C39526289748531691F234EB543D /* FIRInstallationsItem+RegisterInstallationAPI.m */; }; + BCAEAD0B6FB7CF3E6B2E299EC211A598 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = BC128AE86A5BBF7A3C9CB909FEAFABF2 /* UIImage+MultiFormat.m */; }; + BD18E555590B5C94F9833727B479DC92 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FD588FEA8E1E81C7A65560C9E619A80B /* SnapKit-dummy.m */; }; + BD503BE4798FC30D23AC747146D39FE2 /* MarqueeLabel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EC42A2D8DA964A04C23B6C2CEF22BB06 /* MarqueeLabel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD9469D8B4137A22F381056FFD802523 /* GDTCORDataFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FD438F64569883B1D9782170BB796C1 /* GDTCORDataFuture.m */; }; + BDA3559C41497AA1369C31E0ECCEFC08 /* FIRCLSThreadArrayOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F90C0E0E765BA40F1C6BE4BC4D59BA6D /* FIRCLSThreadArrayOperation.m */; }; + BE878741116B4AA08F5CAD186E3A2D28 /* FIRCLSReportAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB59B2372C23B35627C09287BFAFACA /* FIRCLSReportAdapter.m */; }; + BEDD3959A7B6E3ED428DF5D5100CB282 /* NSError+FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 64B43E576C16E2102DF55C89C406F0A0 /* NSError+FIRInstanceID.m */; }; + BEE6B677416CA71C981D1D3F60B18C96 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33224A4FD1302CD2C9D956007E24D28C /* Alamofire.swift */; }; + BEE91D89D51AAF75FBEF311778627B3E /* FBLPromise+Validate.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 246B1E9BF647DAA3DABD8B123FD387CF /* FBLPromise+Validate.h */; }; + BEF16EA34FD515AD9A5794FDDC6B9276 /* FIRInstallationsItem+RegisterInstallationAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = F154B7AC3C124E7A2107A0B11EC1BFA5 /* FIRInstallationsItem+RegisterInstallationAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF279E9EB16EF969016043078E78C849 /* NotificationBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0E1D0EAD7C3211A5075A16D640D26D /* NotificationBanner.swift */; }; + BF48B3B5730C7C4345D604DED9768A64 /* GDTCORTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = F6733B8AD09ED4F227B9AB96E553FAD6 /* GDTCORTransformer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BF6AD73A577D04EE74D38235F60180DC /* GULReachabilityChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DD04DD658908470D9230CE21116A32 /* GULReachabilityChecker.m */; }; + BF8CEA5EE7181B94F74E4DF9B5E8AB27 /* GTLRDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B38BF3464C12B6D228E99E7B909DE98E /* GTLRDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C073B2D91F8BCC7CAC676891784BC432 /* FIRCLSNetworkOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E269E597DCE8B629F9FDB30B150E807 /* FIRCLSNetworkOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0BA98C9CF9FF2D48A101F8732ACCF5F /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA51117AA2B7CD75CC823BCCB6DAFBE2 /* Typealiases.swift */; }; + C0BD556D43C16A24EDEFD9F3C16236E1 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462744F3538BFDADF52424FD0A68830B /* IQTitleBarButtonItem.swift */; }; + C0D5F472F17B5A0F9824C362F35A7132 /* CosmosLocalizedRating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A954BB6E2E69CED6A236519D4BBE2F0 /* CosmosLocalizedRating.swift */; }; + C13B63B3B966C24766055AFDB4A67A2C /* GULKeychainStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = C7512CD0FDB413574E66A937DA3C2496 /* GULKeychainStorage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C17067C2BA1EBE6998D4240B4643C087 /* FIRCLSURLSessionTask_PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 3782B6175FC2FB5D58643E0B5F52F290 /* FIRCLSURLSessionTask_PrivateMethods.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C1D4DB5E976ADF65600C3477AC5F1391 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = 81F4AEF35644BE10D3F6902401F743BE /* FIRInstanceIDCheckinPreferences+Internal.m */; }; + C229DE228EE5078C900D35B8EF0EC77B /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF72499E8A41B9F454630A3894279346 /* ConstraintMakerPriortizable.swift */; }; + C2F3CE616D648FB75DD46731BA461175 /* FIRCLSDownloadAndSaveSettingsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = EE6521A394E8262D5CD205F34D6AE4EC /* FIRCLSDownloadAndSaveSettingsOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C3083848EAFF62A3382B8C43E04BF8FA /* FBLPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F2F46394EEAECF92F8610FE459955E2 /* FBLPromise.m */; }; + C379AFED67427E56DFBD53A6813BD3E8 /* FIRCLSNetworkOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7969C252057FC66B318FBA53E2820E /* FIRCLSNetworkOperation.m */; }; + C39165C7BD1F0FA96014C82C3C443447 /* FBLPromise+Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AF43230F241E5F8988A267472FF74F5 /* FBLPromise+Testing.h */; }; + C3B2D3FA1EE67279AE65F6B69BE1CA4D /* FIRInstanceIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EB1E6C9D4D485FD361568102FE7713B /* FIRInstanceIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C3C34A910C2DEE4E35AE27371176DF68 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A09D4791E05F8030D28E2120BB1E538 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C3EBE9B60104E0C3410E14FC1D6CC998 /* tflite_lstm_recognizer_latin_0.3.class_lst in Resources */ = {isa = PBXBuildFile; fileRef = 98BD0980B72A480B208719EC7ADB48F9 /* tflite_lstm_recognizer_latin_0.3.class_lst */; }; + C42647885C597B106460BB8F1DF0AC61 /* GPBCodedInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = C250B3162877D73DD11713960F5D0BA8 /* GPBCodedInputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C4604FC2B52647F57DDDF14A29061CBD /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646ED4A760A0521BE81802444DF21785 /* Debugging.swift */; }; + C4865EDD1B27CD46FE01BCEBA56D509C /* FIRCLSRecordHost.h in Headers */ = {isa = PBXBuildFile; fileRef = C140BD47F2A6FC52A70CC155BB440066 /* FIRCLSRecordHost.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C59E78BE357EE9B7F989C0D9EC2407E5 /* FIRDiagnosticsData.h in Headers */ = {isa = PBXBuildFile; fileRef = 55539A4B57C4995E81FD746A2D1DC10A /* FIRDiagnosticsData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C6561CB12BC128F225DE70C4E1C27143 /* FIRCLSCrashedMarkerFile.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A06982F049543DAEBA8CE9723CA9EEC /* FIRCLSCrashedMarkerFile.c */; }; + C66E0576E39A2AE8225782678B2FB3CA /* pb_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 093B13CA861F15F182154A5D7A7F5780 /* pb_common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc -fno-objc-arc"; }; }; + C6C5AE2D74A9A7ABA6D4097CCA2278F7 /* GTLRVisionService.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D34CB021E9B756A7D61C505A04130F0 /* GTLRVisionService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6CA9C3394CC50429510AF279E53DF2E /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31394F59DC41ACD27AB09A63D19BC9B2 /* ConstraintRelatableTarget.swift */; }; + C7158550434B8AB9E73238AE7C16D5D3 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F48EAF5B1765FD5C67BF733A1C1CC20 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C7CA081CD0C9ED51B11DF8D34D5BEAE4 /* GDTCORRegistrar.m in Sources */ = {isa = PBXBuildFile; fileRef = 63DDEDD0C856EBB6762A9B2FFC35A341 /* GDTCORRegistrar.m */; }; + C7CED5AE2E11EFFE0E72048BF6499391 /* GULKeychainUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = B3B30F20326967C59817E91FCE64BD2B /* GULKeychainUtils.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C7D25672A36E55300FD38D8B890644A5 /* FIRCoreDiagnosticsConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = 95C6439C4C345180A37846249F31EA6D /* FIRCoreDiagnosticsConnector.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C88CFDA4DDCCDF825667768AEA151FDC /* GTLRVisionService.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA1FE0BEB26F1CDFA775BD8D343EB4C /* GTLRVisionService.m */; }; + C99809B88783BED65F73A0DAF7D86392 /* GTLRDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA4D4107A93B48E82A9FFFFFF64A30C /* GTLRDateTime.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C998130A2365DF563B4AFCD2A6D45C3C /* FIRInstanceIDTokenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A12C1324644EF3D830C1BC0FE2BBBDA1 /* FIRInstanceIDTokenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA2DF984C4A1CB6448145E0CCF605362 /* GTLRQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = ABDF1E46F94EA1AF46BE993FA199C9DE /* GTLRQuery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA3732E22DBF8C8EFC6407E5909D5627 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D3DF79AC8E88AC59554AA6F862F5074 /* LayoutConstraint.swift */; }; + CAACD330A6E3CDAA15BB2FF229D5F723 /* FIRCLSUserLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F60309EB0A016406F1C5EEC2EB30BCD /* FIRCLSUserLogging.m */; }; + CAB72B40AD98BFD06D2B8D16CD30DF14 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A1D6D8C075FFFE4725EEC0149E55BC6 /* FIRDependency.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB0E799342C2F1F61BCA5121CF5E482A /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = E5CACEAFB90B8CE50E00CD9509579CBD /* FIRLibrary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB1A37F9C7ACD14F03DC2406267F7B25 /* FIRCLSSymbolicationOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B48304C89645A2741E543561DF31AE05 /* FIRCLSSymbolicationOperation.m */; }; + CB38C081493E8BA3A64782AF2AA55AF1 /* FIRCLSUserLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = D02D2DCC50E6AEE893DD1ABD1624E98C /* FIRCLSUserLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB597DCCCFA899683F8BEA57666BC56F /* FIRCLSSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = B746AB00B1C549A92A786CFDBDE851D3 /* FIRCLSSignal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CBC0DC5742EC8A72243FF9E7241E9237 /* GTMSessionFetcherLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EEEF5A00A5F6A9786E438B8F1B94A9C /* GTMSessionFetcherLogging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CC069B0287D9AD5428F0C35460A8DD33 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21A0E1A218555ACCB8A88FF0306CC814 /* QuartzCore.framework */; }; + CC300B26BA03B2101A6B62541D38BFB3 /* GoogleToolboxForMac-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 85E3DBF8804D324FB37DF5B3B2702486 /* GoogleToolboxForMac-dummy.m */; }; + CD5EB588A9A9D0DF9E2FFB6BACB0B983 /* FIRCLSUnwind_arm.c in Sources */ = {isa = PBXBuildFile; fileRef = 0B8886E40D9A51AAD4EFE29D624C2C7B /* FIRCLSUnwind_arm.c */; }; + CD7587867135543B396F0CAE939209E9 /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8303D2DFE07660B53A9C808E252F1405 /* ConstraintPriority.swift */; }; + CD9C66DE09B1F2533AE1BF66F8153F45 /* pb_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 82FDCAC7EB103EDDDB46B963CB310CCA /* pb_decode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; + CE350F34D90EF40C493F65DF008E3F91 /* GULNetworkConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 468A81285B1D6D97360FB27FB9A87396 /* GULNetworkConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CE8DDD579B609A071CD6FD265539E744 /* FBLPromise.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 506C307DB96C77F25F38513B80BBE1E4 /* FBLPromise.h */; }; + CEABDB5B9BB37C6A0625573B58524773 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = B89CBDFCDB9CD05CF62C5F713FF21E5D /* NSData+ImageContentType.m */; }; + CF5B3BEABC61A78BD52EE8AD83B5A155 /* GoogleAPIClientForREST-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A3E7A1E06B25EEF37A5160EC40C0FFE1 /* GoogleAPIClientForREST-dummy.m */; }; + CF5F1B73F2FE57E9F058B0A3C3DA2F70 /* FIRAnalyticsInteropListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D713212B5BED635C60AB0F21889877 /* FIRAnalyticsInteropListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CF87DD64624E68A24125699768E29E99 /* FIRCLSURLSessionDownloadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E72597DC264C6E1B0AFB6DDACF20427 /* FIRCLSURLSessionDownloadTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D06C96B1AB0C779657B8F8BC96F9CE39 /* FIRCLSExecutionIdentifierModel.h in Headers */ = {isa = PBXBuildFile; fileRef = A06AE7D1337E19D55B9359EEEAF3B69F /* FIRCLSExecutionIdentifierModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D1610AF1889CB1F775C95A395898E794 /* FIRCLSOnboardingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA078DB0720FD674DC4D551E290D0951 /* FIRCLSOnboardingOperation.m */; }; + D1891DA40FC97A2ABEA1CA6E3F3A01E0 /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B49FCB0ADBBF18511895922E5612A57 /* FIRComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D1C4C71A280F0C16B45DC42AB3B1CE3F /* GTMMIMEDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = C329D93DBDE2EA9482B8C8B03A163394 /* GTMMIMEDocument.m */; }; + D1D05014D2A200C40001936795D15398 /* FIRCLSPackageReportOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D1E31C3EABC8ED0992D9CAAC2C72273A /* FIRCLSPackageReportOperation.m */; }; + D23A0F6024BC97FCDC2315CA689CF952 /* GPBFieldMask.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A7493E74CAD3A000CD2961DF90F4A1 /* GPBFieldMask.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D28AA876629A2272E90A50A6AFCFD6C9 /* FIRCLSInstallIdentifierModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 661D14DDA78F43059C7D979F601CBF35 /* FIRCLSInstallIdentifierModel.m */; }; + D2B876D421A0B0DCE80004FF1BDB6887 /* FIRErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 89A1337A4F8F571535750271C0F695CA /* FIRErrors.m */; }; + D2D251729ED2AABDF2943BE10B4F22CB /* UILoadControl-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 28BC94A61171B2A960FAE649A6D5779F /* UILoadControl-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2D77FFE959AF1AB64E2720C0D0DD369 /* GPBTimestamp.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = AEC59A5DCFCC4AEF73DB0E2BE04A16B5 /* GPBTimestamp.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D33BE2CAD030C5B1386A968F3462FFB9 /* GTMSessionFetcherService.h in Headers */ = {isa = PBXBuildFile; fileRef = C4E2C7E2225634F7AEA87AC4F2C36528 /* GTMSessionFetcherService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D3D8C379C6E4FB487E5ABD6800AD7B7E /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD16ED10136EBA9D6F8A225AA1DF6EDE /* DispatchQueue+Alamofire.swift */; }; + D40ADF2616E3B5689EAE97508AA74EAB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + D4353A868ECBCA8E3DD42D29046BA57D /* FBLPromise+Any.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 43229DACBFD4F93A4D69544035F4105D /* FBLPromise+Any.h */; }; + D443A31D9016E766E0FD2896FC979E76 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D1D1009EAE5830C9212CC5F2500AFB3 /* ConstraintItem.swift */; }; + D487446A8AF6F48B4FBF924EF1666298 /* FIRInstanceIDTokenFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 453977719F0A826E13493F5AD7C11805 /* FIRInstanceIDTokenFetchOperation.m */; }; + D4AA345F090009761384AC97D2012E49 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B999E871C10C540CF2E89F6E7C7E6804 /* LayoutConstraintItem.swift */; }; + D4B52AC0D4A5D20C6017980857CED437 /* GPBMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = AC5439A87E6B53D26D56DE6ED285E244 /* GPBMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D53C638E52CE2D6AD9BCFA72D61AD3B5 /* FIRCLSCrashedMarkerFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 95B87608DF5AA19322199C8F3697AA5C /* FIRCLSCrashedMarkerFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D55D066AB7BEC71F39DB7DA6532BA6DA /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6FFB3C98800C56BEA09C6AEFBAB8668 /* IQKeyboardManager.swift */; }; + D5B44A8AACC863F0CA57FF2ECCB43BE0 /* GDTCORAssert.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A35BA55E255F5F6DBA88EA37DEE0748 /* GDTCORAssert.m */; }; + D5C2BF20FBFAD8D89BDC7615190DFDAF /* FIRCLSProcessReportOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DBA5C21546ADF63E951D040ED31FCC76 /* FIRCLSProcessReportOperation.m */; }; + D65C254F5ABF2CB5ECEE50FE8F8E1A80 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B69F91378204333C582896D23931F8A /* Response.swift */; }; + D6661718FDF4A615609FDF0473896005 /* FIRCLSdSYM.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3FFD80553357328CEF5DA8770AA84A /* FIRCLSdSYM.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D6921CC170095AB7E7EA7DB5A8B6F7F6 /* FIRCoreDiagnosticsConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A66EE16D5DD49C030E675386619E9F /* FIRCoreDiagnosticsConnector.m */; }; + D6BCFB83B012FED414454471B4184B6B /* FIRInstallationsHTTPError.m in Sources */ = {isa = PBXBuildFile; fileRef = 98A0482755751B5232B93DC7A5CAE77C /* FIRInstallationsHTTPError.m */; }; + D7292715BF834E9055EE2B9D2D4596CE /* GULKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE36801554FC77D8625D038620A70CA /* GULKeychainUtils.m */; }; + D7511454658DAAAEE4C550E993061BEB /* GDTCOREvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B90C7CCCCCA7810A02DB09FA5B54F15 /* GDTCOREvent.m */; }; + D795FF905303A22091AEEF450C15D3EC /* FIRInstanceIDKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB14DF59129E25719E5AEA564CA1ED2 /* FIRInstanceIDKeychain.m */; }; + D7B8B1EF062E4F14C35A33FF1BD304D0 /* FIRCLSMachException.c in Sources */ = {isa = PBXBuildFile; fileRef = 95D24C433FEA8DA12C78B604757EC04C /* FIRCLSMachException.c */; }; + D7BCB671B1A070AE438BE3578EA7E4C2 /* FIRCLSMachException.h in Headers */ = {isa = PBXBuildFile; fileRef = D99AF8387E3CDDEC3C19D94E2E7FEC71 /* FIRCLSMachException.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D824E918EAA577CAF6019916BD441106 /* FIRInstallationsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = C99FB980F9823AC715AF974425023B16 /* FIRInstallationsStore.m */; }; + D88F9854DACC023E7A6B115D62ECD39B /* GULNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = DBC9B5B4E2508B3EDB80A64BF097AA84 /* GULNetwork.m */; }; + D8D15165EAE737100136AF017BC9E58A /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = E62CC748304CE4C0BC87F3AC7568E827 /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D90E5DE52B31D5A43239E15E9751AA8B /* FIRCLSNetworkClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DFD42415005A6A0471AC17658F59481 /* FIRCLSNetworkClient.m */; }; + D9414C78911D206E3618C0C733D2F3E8 /* GPBMessage_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 90B2BAC986AA3751E9D00BEC06460E19 /* GPBMessage_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9773F73EF732EAC2B62FD9E4A8037DB /* FIRCLSCompactUnwind.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CC65978AA5DDA97A6A1AD1217EEC800 /* FIRCLSCompactUnwind.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D9CC0E6B7DBCACFD43A5B12A8538C544 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 27EAD66CFC2F731E3BC66E47C538258F /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9D95398C3C6634E1FCED34716162540 /* FIRAppAssociationRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = CBA2D83ABB9E02704D87D23F684F8742 /* FIRAppAssociationRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9FCC5636D8C14C7E9F29DAA8A7E23CB /* Pods-FoodScanTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AE808EB03CCE02FC5B0C9A32D59E34A /* Pods-FoodScanTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA365A287DB7FA8AD60C63EC6829E14B /* FIRCLSMachException.h in Headers */ = {isa = PBXBuildFile; fileRef = 965C6A2BC9CF0493003B4A8B1CED31A2 /* FIRCLSMachException.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DA3C4A3776456333618A5B29E2E912FA /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F8A30BFC013CFCC515DCD7610BF203 /* UILayoutSupport+Extensions.swift */; }; - DA58F75C8DC01C08F838D5DA440A79CD /* SourceContext.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F14425B3F4F3E7F26F9552EBF45ED50 /* SourceContext.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DAC2425B9DB5CDA44B124002562DF020 /* Any.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 431FC9734185D8A1AE8954BEE79FD220 /* Any.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAC2CB27E6CF62B8A68487020FE036C8 /* GoogleDataTransportCCTSupport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97EA12673C49DB03177EEC75FA27FD1A /* GoogleDataTransportCCTSupport-dummy.m */; }; - DB153CE54D1D74B8FE0D5F9CC7030E2E /* FIRCLSDemangleOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = FC847D7DB0EDA275068FA9AB945E80E4 /* FIRCLSDemangleOperation.mm */; }; - DB34C4EAB890E6FA1F06FD004DEDBCA3 /* FIRCLSUUID.m in Sources */ = {isa = PBXBuildFile; fileRef = F99824C3555A8D7E59614043711BCD95 /* FIRCLSUUID.m */; }; - DBCE9D9BA975B0967C26A2CB77C22B8F /* FIRInstanceIDURLQueryItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7F5B4D16D2112B121D56AF97C454A4 /* FIRInstanceIDURLQueryItem.m */; }; - DC4E704D774E16E193E8A150622B919C /* GTLRVisionObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = 377C972240AAE439687E756766BCE6BB /* GTLRVisionObjects.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC8C493773F954C6B091DDB4F5533305 /* FIRCLSReportUploader_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AE799177B9845221FDA6466E85E8C87B /* FIRCLSReportUploader_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DCB1C30660BB0AB99588CEBD53824FCA /* GDTCORRegistrar.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B70A658316941CCE6652CD6F7CCA566 /* GDTCORRegistrar.m */; }; - DCEF6DC4071B581E96C71A8A2FE6C9DF /* FIRCLSCompactUnwind.c in Sources */ = {isa = PBXBuildFile; fileRef = 040AB2F48CDA4A7BDB22A6B5083778A1 /* FIRCLSCompactUnwind.c */; }; - DD86E5B9076E40D7D614E5947BAAA2B4 /* FIRCLSURLSessionUploadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B93B7633B3835BC2664252BBF915287 /* FIRCLSURLSessionUploadTask.m */; }; - DD8B16678030B25FFADB079364A9340B /* GDTCORClock.h in Headers */ = {isa = PBXBuildFile; fileRef = D9656D73F6326C2C6D091CA637913782 /* GDTCORClock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD96B99C33E1906E06DAB0EFD95C08CB /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 62DB5775DB2CFBCA61284FA700A79486 /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE7C0CA0366D7C4C5F2124DA780348A4 /* FIRCLSProcessReportOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1375FF40108F4191B783D01D64AA241F /* FIRCLSProcessReportOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DEECBCB4DBD29F0E5283860538F94D8F /* FirebaseCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FF3153A298ACA24172F2EB8D7A8E826 /* FirebaseCore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DF0B877ED736BECF2C97D60013CB18E9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 104D5DA6913A855FB4AFC3E13DDB04FE /* SDWebImageDownloader.m */; }; - DF2097F28D0F9536573AC954C93F388F /* tflite_lstm_recognizer_latin_0.3.bincfg in Resources */ = {isa = PBXBuildFile; fileRef = 68FD584350B73339523DA1CCD877D829 /* tflite_lstm_recognizer_latin_0.3.bincfg */; }; - DF48C057355BD5B0B1B90267987205AD /* FIRCLSURLSessionDataTask.m in Sources */ = {isa = PBXBuildFile; fileRef = BA8F0D2EB14F6AC0A360F44F0A92F447 /* FIRCLSURLSessionDataTask.m */; }; - DFAF991AD671C418603511C1EB4172C3 /* FIRCLSReportUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = C1073D238EEF63A4AB0710C67BFB7561 /* FIRCLSReportUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DFC894E12890C4A8F5CB522F3A23E985 /* FIRInstallationsStoredItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 791FD48D1E614EB5054DD73F37F4C81C /* FIRInstallationsStoredItem.m */; }; - E0A709544F2DF0C3165E707695A49AFA /* GTLRRuntimeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E5F8A2FB07F90EC23F1EF1078CD10F3 /* GTLRRuntimeCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E0CFA85336E992B0C8052FEA7BBFA675 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - E0F9AB60B87FCDBB05D2EE7EB8E71D9C /* GTLRBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A1E416F0F95C5C547D24129760FDD3 /* GTLRBase64.m */; }; - E0FD27E2F7F5C05D3390126C7DF35EA6 /* CosmosSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBFFD004BF4761F5EC96E36BDAB5AA30 /* CosmosSettings.swift */; }; - E17981A5D045E49F3D29045F5AEF55FD /* GPBUtilities_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = E6DB457207A5CFDF08C5976DFDC7643C /* GPBUtilities_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E189E12EEDDD9A1484602416282A19F9 /* CosmosLayerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0EA302A40B69EDAB2F0FD762F23D907 /* CosmosLayerHelper.swift */; }; - E1D1AEADCE5B73A823813F51C257C952 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = BD7E34CF9731B575459F5087F8C9EA17 /* GTMNSString+URLArguments.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E23F2A655FE3C9095A1AC7B22F3479D1 /* FIRInstallationsKeychainUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A76AB70F121D087B32765FFECC2FD49 /* FIRInstallationsKeychainUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E2F4CD643C7A11E485B97318F82B5DD8 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A141289FC006435FE93B0D1E9E71D109 /* NSImage+WebCache.m */; }; - E337A3B2B095D18890412F2F8EC586D1 /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 78114B0FFAE0D4F133E69DE777245A5A /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E3747EC31FCCA97D75A81FC700CF7E24 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = C60637BE799BBEAF968A2E5075C39A48 /* ResponseSerialization.swift */; }; - E3EB657EE008B121A856408ABD1BBC09 /* GPBWellKnownTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 21F88122FBE496F8E98D8F854B6018DA /* GPBWellKnownTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E3FDE4FEAEDEFB5B4EFC2B3CBD1B67F7 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7372FE29EB5855DF28798ED1C1FF2B80 /* SDWebImageManager.m */; }; - E40846F4A404F4B4413A423979120EBC /* FIRCLSConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CF8766249D479341F19643A4C9B5B6A /* FIRCLSConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E4840003C4527BB550C8996D30603306 /* GDTCORDataFuture.h in Headers */ = {isa = PBXBuildFile; fileRef = A5B29540360B578E162D4DA6A13F4AD9 /* GDTCORDataFuture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E49EE9A5DA279A38B5499E732787ABEC /* FIRInstallationsAuthTokenResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 63498F2E6B363436092DC859541AC3AB /* FIRInstallationsAuthTokenResultInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E563E067FD0D9F24C7508D4D4FF33D90 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 98A1E9980FEA064D9A26BE5F8C8ABA7C /* UIImageView+HighlightedWebCache.m */; }; - E5D8A4465774F9A61D4EB35A40051E69 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - E606137C8F38F160048A2835885FA251 /* FIRComponentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = C68F87057CC5E82EE0E65DF30B52F4DE /* FIRComponentContainer.m */; }; - E65525DA5B9AA1BDF57FB4502B8B5658 /* GTLRVisionObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 03539C5FF96EBB1A3DA258D11A5BD4A0 /* GTLRVisionObjects.m */; }; - E662641D7E78C56840FCA3DB5BC695AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - E6A8FCF7A86960C03A84306D65CE237A /* FIRCLSCompoundOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C8CB0A6FD375E60EC6C7F2BE145167E2 /* FIRCLSCompoundOperation.m */; }; - E6B3A8C4425B28169556B455A84558B0 /* GPBRootObject_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D6EEBB4DCFC5F2CDD9757AE7A60C7322 /* GPBRootObject_PackagePrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E6BEB96B2E1374A337F0D5AABA28E679 /* FIRSecureStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 932E598928694D993AA6177606D62900 /* FIRSecureStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E776F53E707AD1ACF7223305E9EEDBFC /* CosmosDefaultSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD82D2B8C2CB6110A8350365F70324CF /* CosmosDefaultSettings.swift */; }; - E7B44036B46E33E63F9342DCACD797E1 /* GDTCORConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9B9364A85FB1F020B82B5C670FB69B /* GDTCORConsoleLogger.m */; }; - E7C5498224194337FFC29A5B0B3A12A1 /* FieldMask.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E7576EC22F550FA7F16B609C6A4D40C /* FieldMask.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E8A739397C3F3DF9E832FCA099748274 /* FIRCoreDiagnosticsConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F8D070F2960435F822C62AF23195C2E /* FIRCoreDiagnosticsConnector.m */; }; - E8B717D9EDDFFA914F19367B9977C40F /* FIRAnalyticsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D8BFBE5313ABA4DAC213A1218F092A /* FIRAnalyticsConfiguration.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E8D052EDADA85B93F605F2A8C5B76952 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - E9A920FE6E5FC6F5F58B6F3AA9B3FDAF /* StarFillMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F87699E341B1AD8AF84A843CBB8F738 /* StarFillMode.swift */; }; - E9BBAE5F8F2E4C8F208242B3B6DB03D9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */; }; - EAAF40A2A3E552B8FD0113E68DC1E776 /* FIRCLSGlobals.h in Headers */ = {isa = PBXBuildFile; fileRef = 48ADC679761B72BF33567D82B33E6C02 /* FIRCLSGlobals.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EAEA230B7ACAA30A28A0EA684E4D3207 /* GPBMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = FA18453B63005E07890312140519F7AF /* GPBMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB0991B312742A64A3A1E9F57074FB97 /* FIRCLSNetworkOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DB4EF7834D7EFD81FD6355407955D0E /* FIRCLSNetworkOperation.m */; }; - EB349A8F62F17D64442E21C7E9D43445 /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A5C4C1097A6ADDAC32D2E8747C6673B /* FIRLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EB6C78248A970D1A389A9F2147472EA4 /* FIRHeartbeatInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3875EA8066E95C3BE36E11E403BC5E70 /* FIRHeartbeatInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EB8F8676720B5DE5DCF8485033DAC23A /* FIRCLSReportUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = D7481D3C9BC93CE9F2F7B4BB5A531F1F /* FIRCLSReportUploader.m */; }; - EBB1F39B33C5F5440C4D3BCD79A04222 /* GTLRURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = DB8D2F39D6DB1868D4E759378775FCCD /* GTLRURITemplate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC30F30D3A7DD0DCF499AF8DE0AADF01 /* dwarf.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2DBDBAB6DD4904B55F16662B7404C3 /* dwarf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECB9161F8D23D9830FC4C863E2B9AC3C /* GTMSessionFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = F5583FD8431259BBBFC4A0FD717C024F /* GTMSessionFetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECC7632221C89B6B5E65D15781D6B140 /* GDTCORStoredEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = EAACB773CC8F7C58C17AAA8BFF53C048 /* GDTCORStoredEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED09F70A64E4817CFD2792854BC1C335 /* FIRInstanceIDAPNSInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE0AE80E62348D84533CA43FAFF7133 /* FIRInstanceIDAPNSInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED12CD4EE27C699258CAC0CD29582888 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 914ED78B4E241912559F4C7A74EE6943 /* UIButton+WebCache.m */; }; - ED2B495F5EB6F67AE76E1F7FD78F3E36 /* GoogleAPIClientForREST-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DD1755BC1F5C17BF3913ADB09AE34C8 /* GoogleAPIClientForREST-dummy.m */; }; - EDC59ACDD37F2CA343690DB1E1514662 /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = A224A84210EFF5D96ED263E7FDE6BFAA /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDDF3B38A6A0E8A46BFEC45B1EA503D8 /* GPBProtocolBuffers.h in Headers */ = {isa = PBXBuildFile; fileRef = 085F5D0616BC61AD638B79F153BDC46E /* GPBProtocolBuffers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE56FCE09418D4C765FB078DCDF04DC2 /* GPBArray.h in Headers */ = {isa = PBXBuildFile; fileRef = BD5A227D657289824B605E5450A39323 /* GPBArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE8C5D9FCC5156780573366335E41189 /* GDTCORStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F6A1CCF7CD6C5D2F7BD47341FDC7870 /* GDTCORStorage_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EE94242639598C19978787228C076236 /* GTMLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD77662A5A27AA468D014AE7E7C6E49 /* GTMLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EEDD6674DA165A626528D665A4D1D413 /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F8F2221E66D0C348ACA1048E6D19CFF /* SwiftyJSON.swift */; }; - EEF7959B592D4019202C84D82D2A8FE0 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 92FC9F27DE1638BDBFF6F31E2DA1FA89 /* SDWebImageImageIOCoder.m */; }; - EF18819F1891EE2749141B2BE28E6DAB /* FBLPromise+Race.h in Headers */ = {isa = PBXBuildFile; fileRef = 11D1246044E4C62FC53A82B49BB4FDD7 /* FBLPromise+Race.h */; }; - EFE464AD44534C1332ECE199FC2684C3 /* FIRInstallationsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = AE19CA4B1440E093AC7D82A72FD181D7 /* FIRInstallationsVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F00C9A9FC5774E46AACCE34056562C81 /* FIRInstallationsIIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E27C6EA416EED3AE3325746B6D04B70 /* FIRInstallationsIIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F04A2B26084965ADA0330211C8F86CE6 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 24FEEC4F01969259F0DFF7C0AE37E300 /* SDWebImageCoder.m */; }; - F0BF2126D7ABA8E9695FFBFDD055AEA7 /* FIRInstanceIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C578258B0FF0AF5BCD11F6479298EB1B /* FIRInstanceIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F0EA9E18BAEC37DFEB8FCF6051973F72 /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 786ADC128BB9947E7C7C6F103069649B /* GTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F13F2AA7F2E6D95A181CAB99B900D531 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D776878F1F8A999ED799A0EF9BD39A6 /* ServerTrustPolicy.swift */; }; - F15EBF3D52451407FC4611128D846BEC /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46EFD1A3E1027B6D956C0D8FFA4966AD /* IQTextView.swift */; }; - F16F321A9197112912327EB6055BCF13 /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F8A26D3D295BBE1478C6D5C201C38A3E /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F1AA1EC79185E3A7B273C35D0BD52010 /* FIRDiagnosticsData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D27E858B1471D4A68AB5376727440BE /* FIRDiagnosticsData.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F1AF58FF116C9C0780A8D9FE0F028EFD /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = B4061ABA17485F8A8FAD765E5502AF61 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2715B2F8BB394E309BED4C0640E9C17 /* UILoadControl_UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26AFD0FAC32D54175BBA636BE6790C7 /* UILoadControl_UIScrollView.swift */; }; - F28312BF66FB1506D3E9F5C059BAD8C6 /* FIRBundleUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C292D349E71DD4301764B8C6D030B468 /* FIRBundleUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F29CC3BC88872777F6AB50FF82F01FCB /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF9F9B6D2825D73EBB937DDAC0D58CA6 /* ConstraintLayoutSupportDSL.swift */; }; - F4A4C231386BAEFD4858436A47F12C7A /* GDTCORUploadPackage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A3A7F1F513EB566E4FB76B576839FA8 /* GDTCORUploadPackage_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F50909F0F758D203AC88166D7EB44C88 /* FIRInstallationsStoredAuthToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A93DB52E62E9B50741ACD716EE9782A /* FIRInstallationsStoredAuthToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F55C26FF8A89E3034A2593164591981D /* GULLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAF4B296DD8DD4F2E6016B09082E8CA /* GULLogger.m */; }; - F56CFEBC507A1DCB7E54F54CFD9C80FE /* GPBUnknownFieldSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 2221CFD6E463C0545D36ADAF0790BD8B /* GPBUnknownFieldSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F56FB61D4B3B347DAF64341443201A59 /* FBLPromise+Validate.h in Headers */ = {isa = PBXBuildFile; fileRef = CCD59B550B2415659118252954BCF3C1 /* FBLPromise+Validate.h */; }; - F67E68CAAD69E21F6E309433B6CA72C7 /* nanopb-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DD4CB09F528723FA2F77683B488A43 /* nanopb-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F68B0224AD0D1A4977EB84D29547F9C2 /* GULUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EDA2745EF3D3082870D8EE32F2459C1 /* GULUserDefaults.m */; }; - F6B3FEB87B291CAEF8F0E3A166B63E24 /* FBLPromise+Recover.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 5B2AA935B07EC799232D6DB26E584850 /* FBLPromise+Recover.h */; }; - F6DE4FE44E583E21465F9C962F00AF24 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0C9F37619C09DCD1A68B50C27DDB7C /* LayoutConstraint.swift */; }; - F738DAB4D94A0FAAA0E3353822887290 /* FIRCLSInternalReport.m in Sources */ = {isa = PBXBuildFile; fileRef = 99747D3F0ED6B1BC9A97EC6DAA816647 /* FIRCLSInternalReport.m */; }; - F791FAAC27BDBC831A713758AF465801 /* GULLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D73EC5F143FCE92B2ACC19BDCBE94F2 /* GULLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F7AE4667F4D56C085FB6F3D0D74F8055 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A1C896805A7FC4595FD5D7F32CAD03FB /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F7B74645E07C39771156A1FA413B98D4 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 97F54FE5A1A4B8F9E1C5381792EB1B5E /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F7FB7ADACD1BEEDA8F5645952FCE51F4 /* FBLPromise+Validate.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = CCD59B550B2415659118252954BCF3C1 /* FBLPromise+Validate.h */; }; - F831451088B7BEF105A9A4EEC0EF88C0 /* GTLRBatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 52425DA4C7D980D680BF66A5B90EC430 /* GTLRBatchResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F8A3BA83A86AE6B4516EAD5302232317 /* GoogleDataTransportCCTSupport-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B86F9ED67B54F3D847EBCE12311FEA /* GoogleDataTransportCCTSupport-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F9804CC0F10C7CCDE5A8ECC0FD4A5190 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37E9C96A14308A6CF64520DC0FDE49E9 /* QuartzCore.framework */; }; - F9FDFEBD9083B9A3911330CAD03E577A /* GTMSessionFetcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D0AB0491E971C3CDC647CEA4879910 /* GTMSessionFetcher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FA09532034CF2DF139BEC5C808F43374 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44DBA675699A3BE5A0A3D3DF4EDAC2AA /* ConstraintDSL.swift */; }; - FA0FC467580718E1591CAB8D98C766AA /* FIRCLSReportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B153406034F5B3A7AD41BC5D2CFE0E2 /* FIRCLSReportManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FA15BC7AE37D6940A845A910AF843F10 /* FirebaseCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D6AABC3A2E387567671859837DD14D1 /* FirebaseCore-dummy.m */; }; - FA1FD22A262DF2DAA849E1E85902D83D /* FIRCLSUnwind.c in Sources */ = {isa = PBXBuildFile; fileRef = 99989B9CF90F157DAC39D721A06393BE /* FIRCLSUnwind.c */; }; - FA8270CD18FD9151B26C402A2EB2E15D /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AED8F3FAEBA75A84D5078228900B3540 /* ConstraintMakerEditable.swift */; }; - FAEAB016ABE8A2CFBDB5EA3AC1C80CC7 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A12CC6B8D6B35313E68D3723F28B00A /* GTMLogger.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FB37642881B8D1191B1E60BBE6AAD4D7 /* IQKeyboardManagerConstantsInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C5639F125C522F00798D72DFA89AD7B /* IQKeyboardManagerConstantsInternal.swift */; }; - FC2E1A31172F2A03B5EC5DCDD33C1376 /* FIRInstallationsItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AC6A87CB8446EF2B81C0B0E8FB37EEE /* FIRInstallationsItem.m */; }; - FCC3AD00702188C98562BF6F3B603F8D /* GPBRootObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 586DC7B43E1DA9B833AA67C04D9DB213 /* GPBRootObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FD5B098DE7CD90DCAFF586704B4BFE25 /* GPBWireFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FF7A2135D2FF36104E617A8D1D51254 /* GPBWireFormat.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FD7B29E524570D1EF13AD09D1BE9986B /* Protobuf-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F1732DBF4AAA30874ACF10EBA002190 /* Protobuf-dummy.m */; }; - FEB04CEC0231A752ADAC68FEC411F7AB /* FIRInstanceIDTokenFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C81A7FC59D4F7C9DF300A2B27AA358B3 /* FIRInstanceIDTokenFetchOperation.m */; }; - FEE0467DD419B3FE3F934B67BEB0F0A0 /* Struct.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = D586D9805C30E3070112732088F0318D /* Struct.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + DAA9323D1D980D0954700E012065E781 /* pb_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = 95044EEF634A25554E16826F63061D15 /* pb_decode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DB19EFFE6E7ACD31D0A6A0391A85000E /* GTMReadMonitorInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = A87D14B4FCB09A9CEC4CAD8527CCD9AF /* GTMReadMonitorInputStream.m */; }; + DB3CA49C59E07EC30FB5F8FB475F7C60 /* FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7F713CFFE9CD932A94A9BCFB9B1055 /* FIRInstanceID.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBFFCB4D926A09DDB3AC34A0BCD8A0C6 /* FIRCLSFABNetworkClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F2D3FDAC6E35E3A4A60DACE6A7444117 /* FIRCLSFABNetworkClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DC0E3CDF287327134843885029819FDA /* FirebaseCoreInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B2DBA9C589B877CD549555F4F97BAA1 /* FirebaseCoreInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DC4E07A1FCF8554C38F24329C8E24E86 /* GDTCORUploadPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D5372F1F4BEA951D0F7D6ACFA9BE340 /* GDTCORUploadPackage.m */; }; + DC8C081386085DAF3AE2264658DE3053 /* FBLPromise+Testing.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 0AF43230F241E5F8988A267472FF74F5 /* FBLPromise+Testing.h */; }; + DCDD916A4847538381315E0374A6C1F5 /* FIRConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9107E76702327301FACE2A9084DA1EBA /* FIRConfigurationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DCDE4AE78751F9E9A4779E09C32D4B7C /* FBLPromise+Reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = DB2BB8C1E60087FB89C2D8281A9EEE25 /* FBLPromise+Reduce.h */; }; + DCE18305E654670E89386191CD7671B5 /* GTMMIMEDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E06DD1209AFEDF580B6C3EE530BA37D /* GTMMIMEDocument.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDD70BF51133CC18C0452E2CF114CFD2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + DDED53618535D48873FE096199CFD3CE /* GTMGatherInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 99B354DF272A404829C053955F1FB78E /* GTMGatherInputStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE1D814B6C1D1D75972ACC1A6C3E5010 /* FIRCLSDataCollectionToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 40F8CCF71FE09CBACD986376A00E72D2 /* FIRCLSDataCollectionToken.m */; }; + DE5940F4C06D5854BDFAEBDAEFAEDE89 /* FIRCLSApplicationIdentifierModel.h in Headers */ = {isa = PBXBuildFile; fileRef = B1CBBC1D5EC4F07D848640D5F7562D93 /* FIRCLSApplicationIdentifierModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DEDCC2CFC02D74737C8E65CE557733BF /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 651C10E8048DD2929D532D8DDBC94A69 /* ConstraintMultiplierTarget.swift */; }; + DEF89BC13D8F464FBA6952D6ED68CA7D /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A5C2C951E1146C53D2C80BFB93AA9D1 /* FIRErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DF0B877ED736BECF2C97D60013CB18E9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EBB8C6DB4EB95771BE884F1DA8E6C72 /* SDWebImageDownloader.m */; }; + DFB623D9D9386803C69E246865BE6AA9 /* Protobuf-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E6562CCBA21E2C419E71B6A7C116FB1 /* Protobuf-dummy.m */; }; + E01A0A2F39D9B03C024DEB586DC733AF /* FBLPromise+Testing.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D30AC7A1FB44A63106178B50916B231 /* FBLPromise+Testing.m */; }; + E02181E7A3BED6B98B338113A0BBADB9 /* GTMLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 4538A4E1EFDE82B3DBB74656B938DD93 /* GTMLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E023D2E10A12CB666E84C1E3B37C41C9 /* FIRInstanceIDCheckinService.m in Sources */ = {isa = PBXBuildFile; fileRef = B83697E728164C4BBBB5DB3765FCB0DB /* FIRInstanceIDCheckinService.m */; }; + E04A55D7AB7FC15F147A8120BD18E041 /* GTMSessionFetcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2608AA9BA1CF6274A5D49DE39B3C8E37 /* GTMSessionFetcher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E06606745C36EFBCDF63AE837705F7E9 /* FIRInstallationsStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 33632E87B65B3693D9401FA93859540A /* FIRInstallationsStatus.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0FD27E2F7F5C05D3390126C7DF35EA6 /* CosmosSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFAC56EC3F4833109F37DADC96AE559 /* CosmosSettings.swift */; }; + E189E12EEDDD9A1484602416282A19F9 /* CosmosLayerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD3C243553962B5B9F73E4E5EB307AC /* CosmosLayerHelper.swift */; }; + E1DCE25A101B1F253128402D0B2078C8 /* FIRInstallationsAPIService.h in Headers */ = {isa = PBXBuildFile; fileRef = 25A113C0F56A83211D33B7BD1C8F7F7E /* FIRInstallationsAPIService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1F2658DAA485CCF7790465386E7E644 /* firebasecore.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = F2E0FCBF4DD92E8481E3D1C0489DAF55 /* firebasecore.nanopb.c */; }; + E285973C77EF908512CC4F27815FC96C /* GPBDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D962B236EEA31FB0727DDE419F2C2518 /* GPBDictionary.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E297B1F3B314A115ECE813EF96A675FA /* GTLRErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D562FFF1BD33BC57ECA5F10C5DAEB7B /* GTLRErrorObject.m */; }; + E2D9BED18C45B0BF129669C8E2F09E85 /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = C5B76EF81EE74DF255F60549BEE27727 /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E2F4CD643C7A11E485B97318F82B5DD8 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A716956C46DE637638256D75FA70ED7 /* NSImage+WebCache.m */; }; + E336CC00BD43DEC55599B654220C34DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + E33DF84261383E91EF6B02CAC8936168 /* FIRCLSNetworkResponseHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 63CE20593C9D054A778C4EE1FBE78919 /* FIRCLSNetworkResponseHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E3747EC31FCCA97D75A81FC700CF7E24 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 696BDE35DAF24A4C047BC0A023D3C34F /* ResponseSerialization.swift */; }; + E3E6FBF6953ED0059EBB65063F3F225C /* FirebaseCoreInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6119744C12C94850162714DF33A7AA62 /* FirebaseCoreInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E3FDE4FEAEDEFB5B4EFC2B3CBD1B67F7 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCA8D3CB0C9B7E3BF941DCDA9E3D6AD /* SDWebImageManager.m */; }; + E555204B5566A4BE37D0112FBEB429C1 /* FBLPromise+Retry.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7E765E557A0A9DEE90E31AE71B25FE /* FBLPromise+Retry.h */; }; + E563E067FD0D9F24C7508D4D4FF33D90 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EEEEC8052BAD16EFB327F0E0769A8DFE /* UIImageView+HighlightedWebCache.m */; }; + E5B6BE7502CB8CE5B3C92B5836DA6CDF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + E64B4F6A35CFE04B9ED3BCC06D405810 /* FIRCLSContext.h in Headers */ = {isa = PBXBuildFile; fileRef = E0742B185471D0220647A822BD83C141 /* FIRCLSContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E6DA21E390643E79FDBC52DD86163023 /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 86E693529D44CB693E2859C21BD25E72 /* GTMNSData+zlib.m */; }; + E70F398743D965201ABB19C2C811ED53 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AAD23DB2114CDEA011CC8D664F88146 /* FIRDependency.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E723188243DEB68709069B947FE4F26E /* FIRCLSDwarfExpressionMachine.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0948EC73F7E32F0DA0FF1DAA2FFDC0 /* FIRCLSDwarfExpressionMachine.c */; }; + E776F53E707AD1ACF7223305E9EEDBFC /* CosmosDefaultSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAD323052C3D1E7B740854B004F5AAD /* CosmosDefaultSettings.swift */; }; + E79C7AA4E83059BC0178A180C4FAAB5E /* FIROptions.h in Headers */ = {isa = PBXBuildFile; fileRef = DE8215F2A8C9100A42FF778E2A976B62 /* FIROptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7B9EC091E7F2C6F8A5B349A245BBBA6 /* FIRCLSURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 975E0410BE3BF1DF3BCD3D21B623C26D /* FIRCLSURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7C4633C5E299E99CE399F288633F84F /* GDTCCTUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F090DEC3AA53BE97A7F3D30EABA924B /* GDTCCTUploader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E810970F71C0939628B8EEE090A3744B /* FIRCLSReportAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 42E0153825E02E8F6CB1EFA2749FB887 /* FIRCLSReportAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E81F5471991F75F0CFD61329288F4893 /* FIRInstanceIDURLQueryItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 346B09FDFC0110B6C7282B738B2A6D0F /* FIRInstanceIDURLQueryItem.m */; }; + E83E28C362D239A1FCB698EBF2C9D702 /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BA1C04E33F4E6E156E37E0C5AB9B5BC /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E874B19ACA61EFEBFCA8BA25E3DA5EBA /* FIRCLSReport.m in Sources */ = {isa = PBXBuildFile; fileRef = 97516F8F60D43CABACBE1F5274A96319 /* FIRCLSReport.m */; }; + E8DEA8DF0F65EF1CB45AC83BDB3EA695 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + E949CF1F3697311D84BEA77375EF1DD8 /* FIRCLSURLSessionTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B0C5DBD5E823DF52591E1DCBA3FF825 /* FIRCLSURLSessionTask.m */; }; + E97F65463D338D74FD466DBD80905B30 /* GPBType.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A2F96EDE76BD2591E6C4CC992BCD1DE /* GPBType.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E9A920FE6E5FC6F5F58B6F3AA9B3FDAF /* StarFillMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D98F2FDB62DF01198E8ECFEAD4550345 /* StarFillMode.swift */; }; + E9B1BD03AEC10F7FD8B963FD6B2737EC /* FIRCrashlytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D16DFDE12A5EA43DAD38E3D5A949D81 /* FIRCrashlytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA77FB6F38B31933A047D98C0A85ECD8 /* FIRInstanceIDConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C76986CA2DCB2EB5BA5CFD2F7AB0E5 /* FIRInstanceIDConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EAAF0A62F6BFD579B061394E6BFBBBD2 /* GDTCOREvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A71E05A22F2F46F1DE54110802F64207 /* GDTCOREvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EAE6AC30E2108844BBE823745FCBAD79 /* FIRInstanceIDCheckinPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 92664586F1AE31B375E80B6BFCA73EB4 /* FIRInstanceIDCheckinPreferences.h */; settings = {ATTRIBUTES = (Private, ); }; }; + EBE5F1F602BE72BBA956F5085B73E62B /* GULReachabilityChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 77A292702E2FBAC8AD02DC344D780FB0 /* GULReachabilityChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; + ED12CD4EE27C699258CAC0CD29582888 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C54DA13D3992D8D4AE712D0CF6EF0A5 /* UIButton+WebCache.m */; }; + ED269DBBE36E52692EBE180050A52FBD /* FIRCLSInternalReport.h in Headers */ = {isa = PBXBuildFile; fileRef = 9237703CC97F126CC1BF0BCDAD8697CD /* FIRCLSInternalReport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ED34860B87CE8E30EFCEB7E77078B3A7 /* GULSecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = E4E75305D4960C8E952FBE47ECD582E1 /* GULSecureCoding.h */; settings = {ATTRIBUTES = (Private, ); }; }; + EE996F0F3900A53B8C58EA00A920C35D /* FIRInstanceIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = D04F5160EFF5CA2B8546D6DCDB609443 /* FIRInstanceIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEDD6674DA165A626528D665A4D1D413 /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FD4D6E0E23954AD93734D7C6F55F6 /* SwiftyJSON.swift */; }; + EEF6FC2191D23B735C85F8FED38F04C0 /* GPBEmpty.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = AB0271E2DD0E130B2E2996CA4BD62B2D /* GPBEmpty.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EEF7959B592D4019202C84D82D2A8FE0 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F8468D85B50B911C7C8220C206BEB73 /* SDWebImageImageIOCoder.m */; }; + EEFBE3742A3F2862C5E261632D76DF05 /* FBLPromise+Wrap.h in Copy . Public Headers */ = {isa = PBXBuildFile; fileRef = 4C91A263F3D99FA14AB1BAB66206D2AF /* FBLPromise+Wrap.h */; }; + EF13B4CD77C3132A4C3D08A250AE01CF /* GPBExtensionRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 78691BF979E6C913C637A7AE844C6BCF /* GPBExtensionRegistry.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EF6D2F00270B22DBDFB570B77F99F492 /* FIRCoreDiagnosticsData.h in Headers */ = {isa = PBXBuildFile; fileRef = 92ED7374776AF1C3E5F24CC572FFF509 /* FIRCoreDiagnosticsData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EFA1ACDBEE52F505EEFF32C6FE0FCD4D /* GoogleDataTransport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D80D599DE91F60B3796CC3065E45C42 /* GoogleDataTransport-dummy.m */; }; + F01D0894A1574CC3064578C4CD9B7D0C /* FIRDependency.m in Sources */ = {isa = PBXBuildFile; fileRef = C5099C01F9833C4D029213F012E1C997 /* FIRDependency.m */; }; + F02185DF7437B8BA26E29B1532ED886C /* FIRAEvent+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 779245CB2D509200D9C7F80957CD00AF /* FIRAEvent+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F04A2B26084965ADA0330211C8F86CE6 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C3F6736ABACB330BE50C02A4CBA2DC1 /* SDWebImageCoder.m */; }; + F08BD6CC31EEAB56771FD51D85096876 /* FBLPromise+Wrap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C91A263F3D99FA14AB1BAB66206D2AF /* FBLPromise+Wrap.h */; }; + F0907D03F30B051651224FE9CFA735B9 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = E44F3444E3ADC3C5862E1BF3F7A510E0 /* GTMLogger.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F13F2AA7F2E6D95A181CAB99B900D531 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9852836E9ACF73B3B3CB423FE1FB586A /* ServerTrustPolicy.swift */; }; + F15854E5304CF0E18D33829FAA0D9F7C /* Pods-FoodScan-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D1E557C160ADF50B1E64450EAC68D08D /* Pods-FoodScan-dummy.m */; }; + F15EBF3D52451407FC4611128D846BEC /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE6227E0A26CFEAF1F676F2D06C72E8 /* IQTextView.swift */; }; + F16F321A9197112912327EB6055BCF13 /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B8AFE134A25611133C0F83C1072A96B7 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1AF2078B770C8AAC4A275D925733E87 /* GULSceneDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = C76FCBCFAA8EDEEB469261D73B608719 /* GULSceneDelegateSwizzler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F1AF58FF116C9C0780A8D9FE0F028EFD /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = A03FAC71C01C9782C2C5462CEDCC0860 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1BC36380B45E6CBDA3F50A6B4159DBC /* GULNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = B118A7841D4491C258D2367018343F7B /* GULNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1F32C9274D5300E83E5AEF49A9DA478 /* FIRCoreDiagnosticsConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = 474C46AF4410AFC5064926E90E1A48A2 /* FIRCoreDiagnosticsConnector.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F27016A3E35CFF06DD3973B7F537D6D2 /* GDTCORAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 4868BF4C27B6481C8D90033528A5036A /* GDTCORAssert.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2715B2F8BB394E309BED4C0640E9C17 /* UILoadControl_UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56EB5DC9E4F7072DE6880186FFEF33DA /* UILoadControl_UIScrollView.swift */; }; + F29E890B3EA102C754D2358A7A976959 /* FIRVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = D66E2E5FD3C7053DDBE051C293B89875 /* FIRVersion.m */; }; + F2C7293784A2E3CB6419DBDA5B819CFB /* FIRCLSSerializeSymbolicatedFramesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 850C9FF7E6D64FC1D3793865DD5F18B4 /* FIRCLSSerializeSymbolicatedFramesOperation.m */; }; + F3554E1928D72C8C67CFE43BBBF06CC9 /* FIRCLSDwarfUnwindRegisters.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C979B5B1B6F24F31C10B3A2DE7FB92 /* FIRCLSDwarfUnwindRegisters.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F393384A866E251C61F7B670B70FB60E /* FIRInstanceIDCombinedHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6153309B0EAB6C72A99D4C108FD108F4 /* FIRInstanceIDCombinedHandler.m */; }; + F39ABC563F488CF2727A0E8C971C6CC2 /* GTLRUploadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = BD66A3BD61009595B0D4ADE189709EF1 /* GTLRUploadParameters.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3E516EDEFA50BC57450C1893AB7B13E /* FIRInstallationsStoredItem.h in Headers */ = {isa = PBXBuildFile; fileRef = DBE88F4E616D288AED561D8E32CF76F6 /* FIRInstallationsStoredItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F3FEE17B478040BAE4191D2A8C6A88F3 /* GTLRDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = A2790F6BF008D23076E6A6C1725B0D0F /* GTLRDuration.m */; }; + F493EBC4CFC0B13FB3C80D3A320DF620 /* FIRInstallationsIIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 54DBEF85F95CAF274E566C5EF8E7D2FE /* FIRInstallationsIIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4DDF8178135C26AC1AB37DA22F32158 /* GDTCORFlatFileStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = D1C80D4E67922558FA02BD7DEBC197C6 /* GDTCORFlatFileStorage.m */; }; + F4F4CDD8C0858539CC9F1CED876583AC /* FIRInstanceIDKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 47E77938D8A21306376519D3E96AD36C /* FIRInstanceIDKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F52D6806058EF796D8FBECF6F39B836C /* FBLPromise+Any.m in Sources */ = {isa = PBXBuildFile; fileRef = E6CB2FE9A73574FB566DDFC4976EAC0C /* FBLPromise+Any.m */; }; + F556B1B865EB6543B07AD9B9BEF4541C /* FirebaseCrashlytics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 25B5FC54BEC5EAC92EF781F8718DC1E8 /* FirebaseCrashlytics-dummy.m */; }; + F5E8BA894A6A7208A1D9F437177C29C8 /* FIRCLSURLSessionDownloadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D820227642805DA473DC8E1229F6E5C /* FIRCLSURLSessionDownloadTask.m */; }; + F5EB4F96581FBFE6C7CAB486D3B28414 /* Empty.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = B568720C6E0225CB63CD3E6872E3C1BE /* Empty.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F749D438AB6EE8A02FDACFF566BB4599 /* GTLRObject.h in Headers */ = {isa = PBXBuildFile; fileRef = AB91CEC13614EF16232D18BF9B1BEB2D /* GTLRObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F7ACA9F363D10081522C269822769427 /* GTLRService.m in Sources */ = {isa = PBXBuildFile; fileRef = EB6FC82990F5DD4E4655A312F2D761A3 /* GTLRService.m */; }; + F7AE4667F4D56C085FB6F3D0D74F8055 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0333EB1F3DDE9106F15CF73BD6D1308A /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F7B74645E07C39771156A1FA413B98D4 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 090E6488650FBB4FC814DE8D96E1FF12 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F80F0E62A25B413755581CA5D93B0D0A /* FIRInstanceIDConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 46D592B7DE97CEC75DB56AD18A709AE2 /* FIRInstanceIDConstants.m */; }; + F82A1FC0CF0F249DAA064DDA8EE5D019 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */; }; + F8AC05F0C35F32F97A45E46F3FF55B8E /* FIRInstallationsIDController.h in Headers */ = {isa = PBXBuildFile; fileRef = CC2B48EB97EE43AF4BCAFAF314327ACD /* FIRInstallationsIDController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F91239769E0E73EE9A2A93729D89FC12 /* FIRCLSFABAsyncOperation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F98DE858E02A9156BA57D87690B28A1E /* FIRCLSFABAsyncOperation_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F95E9DC0BCE7645A0AFA6A30498C914C /* FIRCLSFABNetworkClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F605381737E52A42E07DB59E9D132497 /* FIRCLSFABNetworkClient.m */; }; + F9804CC0F10C7CCDE5A8ECC0FD4A5190 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21A0E1A218555ACCB8A88FF0306CC814 /* QuartzCore.framework */; }; + F99801EC971746BD24313048CC509951 /* GDTCORUploadPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 64AFA26B34ED43217F1339B482553C77 /* GDTCORUploadPackage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F9E141608BFAA1B33DAA32C79188D1AA /* FIRCLSUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 42902DB959CF1401AF41037680A1A48D /* FIRCLSUserDefaults.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB23FD71AE307464AE6148976CC65FD7 /* FIRInstanceIDLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EC5B5AA15FF7A6502760E5C24C1A8D6 /* FIRInstanceIDLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB37642881B8D1191B1E60BBE6AAD4D7 /* IQKeyboardManagerConstantsInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1C4A2C3E98EBA4303C8BA546CA273F0 /* IQKeyboardManagerConstantsInternal.swift */; }; + FBC275CAB0AAEC213A2C0AF7950272C0 /* GPBAny.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0CB73C4FDA2A3619B7C3CCD0BC28B1 /* GPBAny.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FC37BB0D006FB847126E8F6E6ED950D1 /* GPBWrappers.pbobjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AE2B063B0D75A94E6DD691CC4CADE1F /* GPBWrappers.pbobjc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FC4C0C92CC27BDD34EBFF542484ED950 /* FIRCLSUnwind_arch.h in Headers */ = {isa = PBXBuildFile; fileRef = 27937E239F958C7BA2BBDD9F41E34459 /* FIRCLSUnwind_arch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FC60FB031257D2E56A8D5D1C6C38E8F9 /* FIRInstanceIDTokenOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D3DFE01BD67E9FE46AA9DA9867ABC699 /* FIRInstanceIDTokenOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FCB4BCFC2D69E56A05C104D5B2F3D167 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 899D1D14881B53CC6FFE6067C6A069B5 /* FIRInstanceIDCheckinPreferences+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FCF974862EDD9D9B487A61B85D4C89E7 /* FIRInstanceIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = AC3EC2A7604D0F3DF6DAE10C5FE7A241 /* FIRInstanceIDStore.m */; }; + FDDD09E24884675F1F5FCF3ED2D3D43F /* FIRStackFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F7385F3405CE27FE5DDCB154B05CB1F /* FIRStackFrame.m */; }; + FE0B428A4C7D19D5DF782E57333CF854 /* FIRCLSExecutionIdentifierModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 53C042F7B96B2DF7B0C6E8480AD23501 /* FIRCLSExecutionIdentifierModel.m */; }; + FE878106DE7871B9AEA7F9B45A67E14C /* GoogleUtilities-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BBBA5B442142F5BD208A507B04B27332 /* GoogleUtilities-dummy.m */; }; + FEAEA82451703623F498E7A60264D9EC /* GTLRUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A773D45A52BF20B6E0CBFF3734644B9 /* GTLRUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FECC6A79B57F2A301FFBFCF896A5CC68 /* GPBStruct.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 286A3C615CB4516507DBE30E526EA329 /* GPBStruct.pbobjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FF234DF7525C442EB98CA2B61AB1F313 /* FIRCLSSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C0AF59ADF9BD9BCF1BAA4DBFF6AA221 /* FIRCLSSettings.m */; }; + FFF5164E6332E647BDFADB73EAF16FD7 /* FIRInstanceIDVersionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DA9886F268B00AFC14B5D1A31F6D319 /* FIRInstanceIDVersionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 01148D58FED926BE0C9A3EF932BBF85D /* PBXContainerItemProxy */ = { + 04A842BDEEC32BED6EA43B36799F841C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D372E53E2E8FEAA06A0439FB85E65767; - remoteInfo = FirebaseAnalyticsInterop; + remoteGlobalIDString = 2F2745F4FABCC3C8D07F78FE199F16EE; + remoteInfo = NotificationBannerSwift; }; - 02F730E15C2732B4D481A0F447F79D2B /* PBXContainerItemProxy */ = { + 06C4D717768C32060CEB5ABE3BBB65E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 470FE31978DC918618A329D8B55C85FF; - remoteInfo = Protobuf; + remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; + remoteInfo = GoogleAPIClientForREST; }; - 083F29496525DD84974B758FC83A45C0 /* PBXContainerItemProxy */ = { + 070BD1EA3A201A42B38BA91A771FDC93 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5EC12DD71E5A7D44401B62506C027F8C; - remoteInfo = "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources"; + remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; + remoteInfo = GoogleToolboxForMac; }; - 162F06772FDA70D397F5A73A4FA06FE9 /* PBXContainerItemProxy */ = { + 0BCD817BC12461F9BCB40F59857799BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; - remoteInfo = Alamofire; + remoteGlobalIDString = 37BBF22A0E981064B619306ED6E4F13D; + remoteInfo = "Pods-FoodScan"; }; - 1E12DB9BE6626CAFF7C363E54A285FFD /* PBXContainerItemProxy */ = { + 0FD92C502E5D9984CA8F9410A6F976F6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; - remoteInfo = FirebaseInstanceID; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; - 1E2AA36E758B684D1F2045DE2190B8EF /* PBXContainerItemProxy */ = { + 171CEA6AEAAB1E5FE7D24E6049EBF665 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; - remoteInfo = FirebaseInstanceID; + remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; + remoteInfo = FirebaseCoreDiagnostics; }; - 25BF9CD70A4ABA5B4F6FC44B6D7B35A0 /* PBXContainerItemProxy */ = { + 1AE5DD1C70E10B3A45652AD2A1D74988 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = 3B7356AB7ABB18E92E7628E5656F9625; + remoteInfo = FirebaseMLCommon; }; - 2A38F2982E393C55202157CD82231C3D /* PBXContainerItemProxy */ = { + 1C4F427160B8D7B83170B14D891BE238 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = 9E50973EECDF5CAC627F73748F98D4FF; + remoteInfo = UILoadControl; }; - 3A004B52C6AC4ACCB0D46B1D6A47306C /* PBXContainerItemProxy */ = { + 282154D0CD8A91A5C6517245D306E88C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; - remoteInfo = SnapKit; + remoteGlobalIDString = 0197D7CB5341EE949E9B8A3B937F2DB3; + remoteInfo = FirebaseMLVision; }; - 3A8590D5FFF78339F13CC3E42E5C45C6 /* PBXContainerItemProxy */ = { + 2939CD12A73B4B2B67871D88C9495CF2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; - remoteInfo = nanopb; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; - 3A9535D8EBE11456E142EB3B14358522 /* PBXContainerItemProxy */ = { + 2D23B05C657DC4B162BCA6B9D49A1D42 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; - remoteInfo = FirebaseInstanceID; + remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; + remoteInfo = GoogleAPIClientForREST; }; - 3C593EEF02CC8EAEAC35177B77A00E74 /* PBXContainerItemProxy */ = { + 316832C5958073176F27388A92627818 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0197D7CB5341EE949E9B8A3B937F2DB3; remoteInfo = FirebaseMLVision; }; - 4715B2E28C63ADFEAF930AF03CF1A02A /* PBXContainerItemProxy */ = { + 34DA2447B4877F3B18E1030E10CD4678 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; + }; + 3756DD7E12D3999772D4D13F8233E762 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 3B7356AB7ABB18E92E7628E5656F9625; remoteInfo = FirebaseMLCommon; }; - 47DBEC006BC893E5097C48A54BBD6AC4 /* PBXContainerItemProxy */ = { + 378D4EA8A159126D1F68FA843BD5483E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; - remoteInfo = FirebaseCoreDiagnosticsInterop; + remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; + remoteInfo = PromisesObjC; }; - 47DD7050429D11D854F1CFCFB263DB55 /* PBXContainerItemProxy */ = { + 393AF2B57666BE31C7313C82BB5E3D3C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3B7356AB7ABB18E92E7628E5656F9625; - remoteInfo = FirebaseMLCommon; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 496DFD8171D1BB69941CF2A9F178F900 /* PBXContainerItemProxy */ = { + 3E40EF9FCC76EA8A8CAB43C7D753A914 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = C23DB88E45B0ED14F0C8827BE9C46C95; + remoteInfo = MarqueeLabel; }; - 4A984F07F460FA692C2FA9B39C13D5CB /* PBXContainerItemProxy */ = { + 416FF16C412BE3F376415F519A4F6B1F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; remoteInfo = GoogleUtilities; }; - 4CA62E21D344B4DE9B8941E7D2FE037B /* PBXContainerItemProxy */ = { + 42F029B44A8C6D9F4006502E81268439 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C23DB88E45B0ED14F0C8827BE9C46C95; - remoteInfo = MarqueeLabel; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; + }; + 4755EEF2108ECEB0C27E27BB39B0C69A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; - 4E7E32F79CED033B90AB2A7F9F47D3B6 /* PBXContainerItemProxy */ = { + 518AA8ACF4BDAC048FF42EBF9677527F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; remoteInfo = PromisesObjC; }; - 501B510A0F8EFDF1CF656303AB83849A /* PBXContainerItemProxy */ = { + 51A8D4BEDA1F3CD39CBA48BD66A182B9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; + remoteGlobalIDString = C23DB88E45B0ED14F0C8827BE9C46C95; + remoteInfo = MarqueeLabel; }; - 504C6F241837295881BC95A6D9130861 /* PBXContainerItemProxy */ = { + 58B5B532F42F7FD99385AE28ADF2DBFD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; - remoteInfo = GoogleAPIClientForREST; + remoteGlobalIDString = D118A6A04828FD3CDA8640CD2B6796D2; + remoteInfo = SwiftyJSON; }; - 50F7354E8C21906F6CB8B3A5E2C779F5 /* PBXContainerItemProxy */ = { + 5D87BAF2FE1AE1C1B5BBC05A846FA5BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; - 51F0EE8A6EF4C88533DE617A8BE46263 /* PBXContainerItemProxy */ = { + 631428240B0D3438166394FFE26DBB5F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0197D7CB5341EE949E9B8A3B937F2DB3; - remoteInfo = FirebaseMLVision; + remoteGlobalIDString = 5EC12DD71E5A7D44401B62506C027F8C; + remoteInfo = "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources"; }; - 52DFCAC0C703A56CE23F5C0BE883F6E6 /* PBXContainerItemProxy */ = { + 63DFB5D59E133771A23BB12BB033E4AF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9E50973EECDF5CAC627F73748F98D4FF; - remoteInfo = UILoadControl; + remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; + remoteInfo = IQKeyboardManagerSwift; }; - 55410B3B8C6C86E46F5D620C997223E4 /* PBXContainerItemProxy */ = { + 68E33B0DDB745076E548AD5A8C68E7BF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; + remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; + remoteInfo = GoogleDataTransport; }; - 582152F284EF100D3A726E20060999B9 /* PBXContainerItemProxy */ = { + 6AA672764F09810C64550E2B66C2EB12 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; - remoteInfo = GoogleDataTransportCCTSupport; + remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; + remoteInfo = GoogleDataTransport; + }; + 6E5F7B89FD6EF78250ADCE58BDBA4F56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 526C4398D095B3704EB933DADBC30093; + remoteInfo = FirebaseCrashlytics; + }; + 736D9896C822A411CA593D264BB318C2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; + remoteInfo = FirebaseInstanceID; }; - 59C402EE8D03972981B6B01975CF9178 /* PBXContainerItemProxy */ = { + 7892028188D5BAB512D8A9010A976621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; remoteInfo = FirebaseInstallations; }; - 5BA7110D3C371A393745AD7985D2A91C /* PBXContainerItemProxy */ = { + 7F90FF9BD21BAC62433225F1BFF4710F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = 470FE31978DC918618A329D8B55C85FF; + remoteInfo = Protobuf; }; - 5BC473DE24B91CB68EF2F0304B0E84AD /* PBXContainerItemProxy */ = { + 80766B031BE82E55020930E91837D0FF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7ABC58EF037E8B5BE0CD776D0D629DE6; - remoteInfo = FirebaseMLVisionTextModel; + remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; + remoteInfo = FirebaseInstallations; }; - 62FD6435D02AAEB8E1FB8C9C5E56553D /* PBXContainerItemProxy */ = { + 849BDDEC0A2986DD3633F14A0E244239 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; - remoteInfo = GoogleDataTransport; + remoteGlobalIDString = 37BBF22A0E981064B619306ED6E4F13D; + remoteInfo = "Pods-FoodScan"; }; - 6CD783A3BC63773E4F906C65081CB5B0 /* PBXContainerItemProxy */ = { + 863D55FFD382195801277300930B6F62 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; - remoteInfo = SnapKit; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 6F9E6E6DB1B7817FBBB71F39FBC123C1 /* PBXContainerItemProxy */ = { + 8D3C3F43FCF38B1712802C1750734B62 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; + }; + 93162EDEDF42FA17B018A16269603EC6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 526C4398D095B3704EB933DADBC30093; remoteInfo = FirebaseCrashlytics; }; - 763977238F1F6BE3382AB4BC67A8BB0C /* PBXContainerItemProxy */ = { + 95121CCF7F51E866DBCAD4B118EA2CE0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; remoteInfo = GoogleUtilities; }; - 763BBAE3F280195B70DC033CC3F677CD /* PBXContainerItemProxy */ = { + 96E58B42EBF2F74314F212AD14338C85 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; - remoteInfo = GoogleToolboxForMac; + remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; + remoteInfo = FirebaseAnalytics; }; - 772BEACC9EDABA67E905C2A2631E857C /* PBXContainerItemProxy */ = { + 986663CEB228606C261A2BF2D36270E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 783D4F35CEEE7704AAEBE9C7607799B3 /* PBXContainerItemProxy */ = { + 9B849AE6B97D5A9A33780500AA629F49 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; - remoteInfo = GoogleDataTransportCCTSupport; + remoteGlobalIDString = 0197D7CB5341EE949E9B8A3B937F2DB3; + remoteInfo = FirebaseMLVision; }; - 7D5599423DEADA133E64266C57ECFEDE /* PBXContainerItemProxy */ = { + A103C87A482308AC8559B87013CD68DC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 89ADB0D61D0BE9648E9853F5F8BDA717; - remoteInfo = Popover; + remoteGlobalIDString = 7ABC58EF037E8B5BE0CD776D0D629DE6; + remoteInfo = FirebaseMLVisionTextModel; }; - 7F214944973E1BCB374A108BAE1A7B02 /* PBXContainerItemProxy */ = { + A3A4A293C239C1913489B36F753B5E84 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; - remoteInfo = FirebaseCoreDiagnostics; + remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; + remoteInfo = FirebaseInstanceID; }; - 821B05724B18325D19950C813A88A357 /* PBXContainerItemProxy */ = { + ADA8B92C9CF8D3CCFF76135A6818A177 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; remoteInfo = FirebaseCore; }; - 82FE962820F6D9AC528006C65DD47C6C /* PBXContainerItemProxy */ = { + AE4FC778535C85D177A57C7460B0D0F9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; remoteInfo = FirebaseCore; }; - 8844A8BF0C7C663E533D88EA8C2B2516 /* PBXContainerItemProxy */ = { + AECC489983C10851CF5F339D39656BA0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; + remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; + remoteInfo = Alamofire; }; - 8B56B71CEB62E2E3500C93AB33686841 /* PBXContainerItemProxy */ = { + AECFB49B0FAB46A9DC41D18C2D258C49 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D118A6A04828FD3CDA8640CD2B6796D2; - remoteInfo = SwiftyJSON; + remoteGlobalIDString = 89ADB0D61D0BE9648E9853F5F8BDA717; + remoteInfo = Popover; }; - 8B82112614AA4AECF1B81DDB157D7F62 /* PBXContainerItemProxy */ = { + B35F9CD8D0F8E2A8AFCF9CC328DFAB3B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; - remoteInfo = FirebaseInstallations; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 9252F959D53938CC6DBEE4E9C35918F7 /* PBXContainerItemProxy */ = { + B528333B75A1CC1CC0D8F5239BF06F7A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; - remoteInfo = PromisesObjC; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 93D95A8F828343257614B1AD7E919768 /* PBXContainerItemProxy */ = { + BC7661A6D82BD072FCAAC64777166132 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; - remoteInfo = nanopb; + remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; + remoteInfo = FirebaseAnalytics; }; - 941B4D419141CCB4F87451BE228E0A4D /* PBXContainerItemProxy */ = { + BCDDCFDF74FB084D83A8925814DE03DE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 37BBF22A0E981064B619306ED6E4F13D; - remoteInfo = "Pods-FoodScan"; + remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; + remoteInfo = GoogleAppMeasurement; }; - 9A22DCCDFF0579048EE679AD7E10E30D /* PBXContainerItemProxy */ = { + BDC423B1753D750BB6B5868D4840DD36 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2F2745F4FABCC3C8D07F78FE199F16EE; - remoteInfo = NotificationBannerSwift; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; }; - 9F46BA6B1CF64CD5211FE8F19EF51F14 /* PBXContainerItemProxy */ = { + BE4E96E61EC193660A2381E42162D6E7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; - remoteInfo = PromisesObjC; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - AECACEDEFF4CB3939DC1C3E15F7B1923 /* PBXContainerItemProxy */ = { + C59EC6A2CE78AA1498EF2F10C67ED542 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 470FE31978DC918618A329D8B55C85FF; - remoteInfo = Protobuf; + remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; + remoteInfo = FirebaseCoreDiagnostics; }; - B331AA783783E6C480EA0795E1056900 /* PBXContainerItemProxy */ = { + C7577D5DF4DBFC2817DEC0BDAFDA8E73 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; + remoteGlobalIDString = 470FE31978DC918618A329D8B55C85FF; + remoteInfo = Protobuf; }; - BB427BDABBED0620BE11BB7C39D2AC6A /* PBXContainerItemProxy */ = { + CA60E77A6C12646D3E1B6A24A4B234A3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; + remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; + remoteInfo = SnapKit; }; - BB4654C1C7704BA87C3F164D5D75E248 /* PBXContainerItemProxy */ = { + CBEC3131E97D3A7BA2085F9E5CCEBD57 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; + remoteInfo = GoogleDataTransportCCTSupport; }; - C06A0ED91FE8430A212031019FA123BF /* PBXContainerItemProxy */ = { + CD3EC2B7DDF2C69F8BEDA903135B0F6A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; - remoteInfo = GoogleToolboxForMac; + remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; + remoteInfo = PromisesObjC; }; - C0E53D54621111D5302DCE71C591BCA1 /* PBXContainerItemProxy */ = { + D2356DF9C8197EA844DC923FCAE9E093 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; - remoteInfo = Firebase; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; - C348B265E9A28C778CEED8FF3C9214E1 /* PBXContainerItemProxy */ = { + D275BEE1203CFC897423A6175BA497D1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 37BBF22A0E981064B619306ED6E4F13D; - remoteInfo = "Pods-FoodScan"; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; }; - C40866C3372AFC23014666B7A409F5F9 /* PBXContainerItemProxy */ = { + D46C17199B3CF18DDA8FE64CACE46D7C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 526C4398D095B3704EB933DADBC30093; - remoteInfo = FirebaseCrashlytics; + remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; + remoteInfo = GoogleToolboxForMac; }; - C8FEF11E54617DB2985227CB25239D3D /* PBXContainerItemProxy */ = { + D644FE6F4DF0802D88E2D4919F6E4555 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; - CCBB4B1783A7B9B9399E9C2CD1BA29F1 /* PBXContainerItemProxy */ = { + D8A289C3DCF1782673DB7C494B54EE6D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C23DB88E45B0ED14F0C8827BE9C46C95; - remoteInfo = MarqueeLabel; + remoteGlobalIDString = 19622742EBA51E823D6DAE3F8CDBFAD4; + remoteInfo = SnapKit; }; - CF4FB4A222284D32D4C064902EA8F83C /* PBXContainerItemProxy */ = { + D8BDBD6BFC2F5786916E866B3A187ED7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; - remoteInfo = FirebaseCoreDiagnosticsInterop; + remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; + remoteInfo = GoogleDataTransportCCTSupport; }; - D0003EB733992D82D1ECDC783656D6BD /* PBXContainerItemProxy */ = { + D906D5E0618F51F0A4939591D1A05090 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; + remoteInfo = FirebaseInstallations; }; - D3523FAA72B63AD9E1150BDD6CFA8910 /* PBXContainerItemProxy */ = { + DB2C70D801FC676D33489976EAC5C07E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; - remoteInfo = nanopb; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; }; - D41A5B966A969AD3BC6EDB2B3539513B /* PBXContainerItemProxy */ = { + E01D7DC612B489FF47941C215B9B481D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 00F31BD5217A20974B5E9AAC6256D98E; - remoteInfo = Cosmos; + remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; + remoteInfo = GoogleToolboxForMac; }; - D589FF78FACA845715D46726DF5B8134 /* PBXContainerItemProxy */ = { + E2EF0F743EAE8CCDED76E6A589C0C400 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; - remoteInfo = GoogleAPIClientForREST; + remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; + remoteInfo = FirebaseInstallations; }; - D87BFEF13439D9827255F98157DD8799 /* PBXContainerItemProxy */ = { + E2FAA17B0FAA153F0DE3BAD56D32D749 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 470FE31978DC918618A329D8B55C85FF; - remoteInfo = Protobuf; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; - DA9403377D4D7F887F4878438AA4F4EA /* PBXContainerItemProxy */ = { + E5D26BFC17F45AD97FB2485A4BED3C43 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0197D7CB5341EE949E9B8A3B937F2DB3; - remoteInfo = FirebaseMLVision; + remoteGlobalIDString = 7ABC58EF037E8B5BE0CD776D0D629DE6; + remoteInfo = FirebaseMLVisionTextModel; }; - E54A7C392F61FB6D7E3EA173411879AE /* PBXContainerItemProxy */ = { + EBD11EEFAE5422510A910CFA052EA7ED /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D372E53E2E8FEAA06A0439FB85E65767; - remoteInfo = FirebaseAnalyticsInterop; + remoteGlobalIDString = 00F31BD5217A20974B5E9AAC6256D98E; + remoteInfo = Cosmos; }; - EC410ED7937F324E0B9E19404BDF3019 /* PBXContainerItemProxy */ = { + ED6D8C7C51E1843257BFB46713893B02 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; - remoteInfo = FirebaseCoreDiagnostics; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; }; - EE0B193BE18D54006EBF209AEEB93DFD /* PBXContainerItemProxy */ = { + F0E217E05D1393ADE51571C7A676E818 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; - remoteInfo = FirebaseCoreDiagnosticsInterop; + remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; + remoteInfo = GoogleAppMeasurement; }; - F2360064187B8AE54FF8D053E5D72933 /* PBXContainerItemProxy */ = { + F18F364909ECAFB4061C0EF9B2D618FF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; remoteInfo = GoogleDataTransport; }; - F79F45D812534A6EE912CC1562BCB3C0 /* PBXContainerItemProxy */ = { + F27CB909A20B5A738B530852BA96A087 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7ABC58EF037E8B5BE0CD776D0D629DE6; - remoteInfo = FirebaseMLVisionTextModel; + remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; + remoteInfo = GoogleDataTransportCCTSupport; }; - FA144ABD969DF59EFADF2BDC900F3C54 /* PBXContainerItemProxy */ = { + F451A874784F42B30D83EA679023C690 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; - remoteInfo = GoogleToolboxForMac; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; - FBD0409BFEA2CA90BDEB2A7DE3A603C0 /* PBXContainerItemProxy */ = { + F66E153907D38C6F8FD03BFA82AD29B5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; - remoteInfo = IQKeyboardManagerSwift; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; + }; + FD4AA03875C3D987A373A74CB4030EC5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; + remoteInfo = PromisesObjC; + }; + FD9A3455E470869799A6D8E2DEABC7C3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; + }; + FE9BC87D3F77EBDB334EDD21C2420294 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 470FE31978DC918618A329D8B55C85FF; + remoteInfo = Protobuf; + }; + FEC37263565040CFEC6B22BCD6199F36 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; + remoteInfo = Firebase; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E3117FB0F0B100259E003D943299EB8 /* Copy . Private Headers */ = { + 0C5FF528C23906780D7B0F39168BC2DC /* Copy . Public Headers */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = "$(PRIVATE_HEADERS_FOLDER_PATH)/."; + dstPath = "$(PUBLIC_HEADERS_FOLDER_PATH)/."; dstSubfolderSpec = 16; files = ( - 326FFE44B8FD8D08C1C8D6B62D2E8455 /* FBLPromisePrivate.h in Copy . Private Headers */, + 3E7BDB28009480D61D3756DAF652BB34 /* FBLPromise+All.h in Copy . Public Headers */, + 38A1B959D32E0581957BC348DC4ED3EF /* FBLPromise+Always.h in Copy . Public Headers */, + D4353A868ECBCA8E3DD42D29046BA57D /* FBLPromise+Any.h in Copy . Public Headers */, + 1377C7B8570066C33116004D43823AC6 /* FBLPromise+Async.h in Copy . Public Headers */, + 864A93EFB79C94038B756FF5800DBEDB /* FBLPromise+Await.h in Copy . Public Headers */, + 3DFA43660BFA2C4CD27C1BF7834AA5C1 /* FBLPromise+Catch.h in Copy . Public Headers */, + 92BABF0B92ED682F20A7700295A47F14 /* FBLPromise+Delay.h in Copy . Public Headers */, + 694F13307AE5C8B32626011FD2F6807A /* FBLPromise+Do.h in Copy . Public Headers */, + 637776F2C89EE906659348C3260BF2E9 /* FBLPromise+Race.h in Copy . Public Headers */, + 6C88D04E107310AB3B270B45D437F02F /* FBLPromise+Recover.h in Copy . Public Headers */, + 4249588098FA829337E695AA92BB0661 /* FBLPromise+Reduce.h in Copy . Public Headers */, + 8D01427E5BDA75BEDB6E83A74B3568DA /* FBLPromise+Retry.h in Copy . Public Headers */, + DC8C081386085DAF3AE2264658DE3053 /* FBLPromise+Testing.h in Copy . Public Headers */, + 54787ECEB2C94741353C0880FAC97470 /* FBLPromise+Then.h in Copy . Public Headers */, + 899CAB6EB6C6B66A32F1BA528AEEC589 /* FBLPromise+Timeout.h in Copy . Public Headers */, + BEE91D89D51AAF75FBEF311778627B3E /* FBLPromise+Validate.h in Copy . Public Headers */, + EEFBE3742A3F2862C5E261632D76DF05 /* FBLPromise+Wrap.h in Copy . Public Headers */, + CE8DDD579B609A071CD6FD265539E744 /* FBLPromise.h in Copy . Public Headers */, + 8266F1C1CD7F16044E4EE3746F30D83D /* FBLPromiseError.h in Copy . Public Headers */, + 5012F154717CDDA0E1BBD71F438D1AC7 /* FBLPromises.h in Copy . Public Headers */, ); - name = "Copy . Private Headers"; + name = "Copy . Public Headers"; runOnlyForDeploymentPostprocessing = 0; }; - D0894A91FC66F8315B2B18C927E24C97 /* Copy . Public Headers */ = { + D06F1628EED68EE008797383ED26BEBA /* Copy . Private Headers */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = "$(PUBLIC_HEADERS_FOLDER_PATH)/."; + dstPath = "$(PRIVATE_HEADERS_FOLDER_PATH)/."; dstSubfolderSpec = 16; files = ( - 394176581708AFA534C919CEEC026B34 /* FBLPromise+All.h in Copy . Public Headers */, - D6D62A07688C23327472FE6727DC69F9 /* FBLPromise+Always.h in Copy . Public Headers */, - 10F1AD015C91E4EAF98ADCC2E8A15DAE /* FBLPromise+Any.h in Copy . Public Headers */, - C78BFE0645CDD1C56379779F8408BC43 /* FBLPromise+Async.h in Copy . Public Headers */, - 4BBE0CD49BEA31E01AF305F4A7A67D81 /* FBLPromise+Await.h in Copy . Public Headers */, - D0B07F7C1871C98F112631A7AED78CB7 /* FBLPromise+Catch.h in Copy . Public Headers */, - 9BB851A97571D18E0FF179D463E98857 /* FBLPromise+Delay.h in Copy . Public Headers */, - 2677D4C1BD69B843046974245D98BDAC /* FBLPromise+Do.h in Copy . Public Headers */, - 462EE0631FF95146DA55325066E123A4 /* FBLPromise+Race.h in Copy . Public Headers */, - F6B3FEB87B291CAEF8F0E3A166B63E24 /* FBLPromise+Recover.h in Copy . Public Headers */, - 0FFE6ACBCAF46278B64F25E69905741F /* FBLPromise+Reduce.h in Copy . Public Headers */, - 9044C16C53572DA529AE551F1C1BB582 /* FBLPromise+Retry.h in Copy . Public Headers */, - 6C1987336BD6B1F55EFA940A69A855F5 /* FBLPromise+Testing.h in Copy . Public Headers */, - A7CBD2DDD3336B3AE5B2895C812698FE /* FBLPromise+Then.h in Copy . Public Headers */, - A556D81389C609E451D8337406E9275A /* FBLPromise+Timeout.h in Copy . Public Headers */, - F7FB7ADACD1BEEDA8F5645952FCE51F4 /* FBLPromise+Validate.h in Copy . Public Headers */, - 1FA2032CD0CD2428BBB055DC723A5B3C /* FBLPromise+Wrap.h in Copy . Public Headers */, - C31F17F0D0042CF393C528BCBA7CFCBD /* FBLPromise.h in Copy . Public Headers */, - 80748034AC353EE811EF3F6606F97E64 /* FBLPromiseError.h in Copy . Public Headers */, - A62AD52A5F256ADEB724896AAA0F5F4D /* FBLPromises.h in Copy . Public Headers */, + 2029127F2812E2FF3BEB03C348D7A816 /* FBLPromisePrivate.h in Copy . Private Headers */, ); - name = "Copy . Public Headers"; + name = "Copy . Private Headers"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 00C708B92EF46243BE1B545E47CF4B95 /* Cosmos.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Cosmos.xcconfig; sourceTree = ""; }; - 01424D35ABBF2002B14B88C218562E6D /* GPBArray.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBArray.m; path = objectivec/GPBArray.m; sourceTree = ""; }; - 0186D1A585E443365DED29109D35A2F0 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 01CD1FE18BF54DFF9F4F3DA4FD25CE80 /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = ""; }; - 03183A06C140BE5D20891268231DFC7D /* GoogleToolboxForMac-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleToolboxForMac-dummy.m"; sourceTree = ""; }; - 033AB68F190A55A86B819B7215636FCD /* FIRCLSFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFile.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSFile.m; sourceTree = ""; }; - 03516DB8E428B74D2EAD7C6BD495C209 /* GTLRBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBase64.h; path = Source/Utilities/GTLRBase64.h; sourceTree = ""; }; - 03539C5FF96EBB1A3DA258D11A5BD4A0 /* GTLRVisionObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRVisionObjects.m; path = Source/GeneratedServices/Vision/GTLRVisionObjects.m; sourceTree = ""; }; - 040AB2F48CDA4A7BDB22A6B5083778A1 /* FIRCLSCompactUnwind.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSCompactUnwind.c; path = Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.c; sourceTree = ""; }; - 04F063FF318A4B91B8420AFB36CD1E84 /* FIRCLSSignal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSSignal.c; path = Crashlytics/Crashlytics/Handlers/FIRCLSSignal.c; sourceTree = ""; }; - 04F06448A244B8A7AF3286549D110F0C /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - 054878626B006D9E9F4B316D44600EF3 /* FIRCLSContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSContext.h; path = Crashlytics/Crashlytics/Components/FIRCLSContext.h; sourceTree = ""; }; + 009D4B5EF871F53B033D51B0DB42C68A /* FIRInstanceIDTokenOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.m; sourceTree = ""; }; + 00DE726E4E6B60A310BEC866DD6F35F7 /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = FirebaseCore/Sources/Private/FIRErrorCode.h; sourceTree = ""; }; + 01262491E1FC010EF0D97FA1996DA841 /* FIRCLSApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSApplication.h; path = Crashlytics/Crashlytics/Components/FIRCLSApplication.h; sourceTree = ""; }; + 0129FFECB5BE897E20ED8B4C23A19F4F /* GULNetworkURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkURLSession.h; path = GoogleUtilities/Network/Private/GULNetworkURLSession.h; sourceTree = ""; }; + 012B7B072C8AF52B9B6F688EE6295564 /* FIRInstallationsAPIService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsAPIService.m; path = FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m; sourceTree = ""; }; + 01A18FFA505B58A1E51C2458CE8BB0DB /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; + 01EDE9B311CD2D4884F6DD85A225D330 /* GULNetworkLoggerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkLoggerProtocol.h; path = GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h; sourceTree = ""; }; + 0214B19253ADE0303ADA5C9060E94E34 /* tflite_lstm_recognizer_latin_0.3.bincfg */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.bincfg; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.bincfg; sourceTree = ""; }; + 022C228464D99A818F61DB286DBF61B3 /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = FirebaseCore/Sources/Private/FIRComponent.h; sourceTree = ""; }; + 0304A90CD42C0A9A97BA4AB0C950257A /* FIRCLSThreadState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSThreadState.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSThreadState.h; sourceTree = ""; }; + 032072736174D7F2E85C5BA43B10AC9E /* FIRCLSCodeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCodeMapping.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSCodeMapping.h; sourceTree = ""; }; + 033373303D8729FC48E0A5E6FF5BDC63 /* GPBWireFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBWireFormat.h; path = objectivec/GPBWireFormat.h; sourceTree = ""; }; + 0333EB1F3DDE9106F15CF73BD6D1308A /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 0417D6A35E2396024B8938331A1F981B /* FirebaseCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCore.modulemap; sourceTree = ""; }; + 04B8266C7733E1BFF98208265854DE17 /* FIRInstallationsHTTPError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsHTTPError.h; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h; sourceTree = ""; }; + 04DA57D2C1E6D49C4B5781F927C9A3C6 /* GULAppEnvironmentUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppEnvironmentUtil.h; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.h; sourceTree = ""; }; + 052373579DC6B1FF399E4BF9E3BDEBEE /* FIRAValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAValue.h; path = Crashlytics/Crashlytics/Helpers/FIRAValue.h; sourceTree = ""; }; + 058509F6BFE8393216E1B2D8BF119A37 /* FBLPromise+Await.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Await.m"; path = "Sources/FBLPromises/FBLPromise+Await.m"; sourceTree = ""; }; + 05943823E3A2C03711307DF590F14FA5 /* tflite_lstm_recognizer_latin_0.3.conv_model */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.conv_model; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.conv_model; sourceTree = ""; }; 05C4280976BF93DA8B36818DE2E2A5E0 /* Cosmos.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Cosmos.framework; path = Cosmos.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 05E1206C6455EC8D681044B41290831B /* GDTCORUploadPackage_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadPackage_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h; sourceTree = ""; }; 0612EAD4175959AC43D07BBBD03F9F82 /* Pods-FoodScan.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoodScan.release.xcconfig"; sourceTree = ""; }; - 068571CC13B36BF09077C43C4B109E9B /* FIRCLSOnboardingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSOnboardingOperation.m; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.m; sourceTree = ""; }; - 06DC596725F052D6851A9D913BC9859E /* FIRInstallationsHTTPError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsHTTPError.h; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h; sourceTree = ""; }; + 062F240D69FBFD870897B26AB513C43F /* FIRInstanceIDTokenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenManager.m; path = Firebase/InstanceID/FIRInstanceIDTokenManager.m; sourceTree = ""; }; + 0682F2F823B15ADE24648DBCA127E354 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + 06D6E6F7A26B5CDF44813D492ABE44CE /* GTLRQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRQuery.m; path = Source/Objects/GTLRQuery.m; sourceTree = ""; }; 06FC5C9CF96D60C50FCD47D339C91951 /* nanopb.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = nanopb.framework; path = nanopb.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 07EC4EAFDB287D70087CDB74272EA846 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; - 085F5D0616BC61AD638B79F153BDC46E /* GPBProtocolBuffers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBProtocolBuffers.h; path = objectivec/GPBProtocolBuffers.h; sourceTree = ""; }; - 08980813BE7C96CE90EDBDA52842E9CD /* GDTCORTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransport.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h; sourceTree = ""; }; - 08FF81A6AB422695EE3DC72CB0C58686 /* FIRInstanceIDKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeychain.h; path = Firebase/InstanceID/FIRInstanceIDKeychain.h; sourceTree = ""; }; - 0938778595C2A65E2DDB8C9F047EB98F /* GTMSessionFetcher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GTMSessionFetcher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 093E345076B1AF0B27D988AB88966279 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; - 0984CA7F0E51A50B5E4C58E9791C6ED2 /* pb_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_encode.c; sourceTree = ""; }; - 09B7B88E8AA77EB15862F30BD8F95E61 /* FIRCLSLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSLogger.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSLogger.m; sourceTree = ""; }; - 0A5C4C1097A6ADDAC32D2E8747C6673B /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = FirebaseCore/Sources/Private/FIRLogger.h; sourceTree = ""; }; + 0771D69999D0D59011FD5D1D3A2ABBB0 /* FIRCLSNetworkClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSNetworkClient.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSNetworkClient.h; sourceTree = ""; }; + 07C78533F1F45D2DD5B6C6E6B62678F6 /* GoogleDataTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GoogleDataTransport.h; path = GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h; sourceTree = ""; }; + 07D0FD720B3EA629BB319385FBF8DC12 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/NSButton+WebCache.m"; sourceTree = ""; }; + 085F2D45ADC6B3C6B091D77E55A2B731 /* FIRCoreDiagnosticsConnector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsConnector.h; path = FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h; sourceTree = ""; }; + 090E6488650FBB4FC814DE8D96E1FF12 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + 091735C23D1CA8B028105411310731EC /* GTLRUploadParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUploadParameters.m; path = Source/Objects/GTLRUploadParameters.m; sourceTree = ""; }; + 093B13CA861F15F182154A5D7A7F5780 /* pb_common.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_common.c; sourceTree = ""; }; + 0966DF21ED8FBCAF42EEFC2EC23E7E20 /* NotificationBannerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NotificationBannerSwift-Info.plist"; sourceTree = ""; }; + 0976FAB7ECC626BD43CE29789AD5D879 /* GPBSourceContext.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBSourceContext.pbobjc.m; path = objectivec/GPBSourceContext.pbobjc.m; sourceTree = ""; }; + 09817A6ABEBB85128F1DF8DF7D96854E /* FIRCLSRecordBase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSRecordBase.m; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.m; sourceTree = ""; }; + 0994884AAEAE308F4C973B3EDF9297D3 /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = FirebaseCore/Sources/Private/FIROptionsInternal.h; sourceTree = ""; }; + 09F85045316C1F9717FA620B775E3098 /* FIRInstallationsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsVersion.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h; sourceTree = ""; }; + 0A5674569335EE8FD8A264D7DC0E155F /* FIRCLSMachOSlice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachOSlice.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOSlice.h; sourceTree = ""; }; + 0A5C2C951E1146C53D2C80BFB93AA9D1 /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = FirebaseCore/Sources/Private/FIRErrors.h; sourceTree = ""; }; 0A64A5963516FC401DF95E1DD737CC40 /* Pods_FoodScan.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FoodScan.framework; path = "Pods-FoodScan.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0A773D45A52BF20B6E0CBFF3734644B9 /* GTLRUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUtilities.h; path = Source/Utilities/GTLRUtilities.h; sourceTree = ""; }; 0AB91F46DDDA5588520D012E6F4FB918 /* NotificationBannerSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NotificationBannerSwift.framework; path = NotificationBannerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BA77E8D8E59C848D8DBDDDA1DB84F37 /* GoogleAPIClientForREST-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-umbrella.h"; sourceTree = ""; }; - 0BC3335F66ADF5B22C6EE00A12AC22EA /* NotificationBannerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NotificationBannerSwift-prefix.pch"; sourceTree = ""; }; - 0C09FA29FA108EAF03D24D768884DD97 /* tflite_lstm_recognizer_latin_0.3.conv_model */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.conv_model; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.conv_model; sourceTree = ""; }; + 0ADA2AAA92871FA7CCE018A3A1607CCB /* FIRInstanceIDBackupExcludedPlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDBackupExcludedPlist.h; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h; sourceTree = ""; }; + 0AF43230F241E5F8988A267472FF74F5 /* FBLPromise+Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Testing.h"; path = "Sources/FBLPromises/include/FBLPromise+Testing.h"; sourceTree = ""; }; + 0B11721D9F870B79AD140FECD483E500 /* FIRCLSRecordBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSRecordBase.h; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.h; sourceTree = ""; }; + 0B8886E40D9A51AAD4EFE29D624C2C7B /* FIRCLSUnwind_arm.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSUnwind_arm.c; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arm.c; sourceTree = ""; }; + 0B90C7CCCCCA7810A02DB09FA5B54F15 /* GDTCOREvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCOREvent.m; path = GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m; sourceTree = ""; }; + 0BC3AA083FC71A68E475020560D4CCA1 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = ""; }; + 0BC40E80DBB9A0521345A59482078CE8 /* UILoadControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UILoadControl.swift; path = Pod/Classes/UILoadControl.swift; sourceTree = ""; }; + 0BF4231CB348100C6ECD88B8C674E5E7 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; + 0C4B0E1C9DC68D3AFB51CDB5A332B408 /* GULAppDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler_Private.h; path = GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h; sourceTree = ""; }; 0C4C5BF414C33A89EA4811B8795F46F7 /* Pods-FoodScanUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FoodScanUITests-umbrella.h"; sourceTree = ""; }; - 0C50AEB65EB62328E55198842BAA3337 /* cct.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cct.nanopb.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h; sourceTree = ""; }; - 0C5639F125C522F00798D72DFA89AD7B /* IQKeyboardManagerConstantsInternal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstantsInternal.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift; sourceTree = ""; }; - 0C59522825B27A36B289F27CEFC154BE /* FIRCLSSettingsOnboardingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSettingsOnboardingManager.m; path = Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.m; sourceTree = ""; }; - 0CAC06114B7FA08EE9932F7B5046AFCF /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - 0D04EDA1D9D114619986D2421B288D64 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; - 0D55D0B21D5134615C9FB6DF43A52C85 /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Firebase/InstanceID/Public/FIRInstanceID.h; sourceTree = ""; }; - 0D7D41FEAA62A857C5D8A3023F209BCA /* FIRInstanceIDTokenOperation+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDTokenOperation+Private.h"; path = "Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h"; sourceTree = ""; }; - 0DCE831830D3CB65642BFDD442C2FE11 /* GTLRQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRQuery.m; path = Source/Objects/GTLRQuery.m; sourceTree = ""; }; - 0DD1755BC1F5C17BF3913ADB09AE34C8 /* GoogleAPIClientForREST-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleAPIClientForREST-dummy.m"; sourceTree = ""; }; - 0E1BDB07F32273E603A40E08573E8F76 /* Cosmos-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cosmos-prefix.pch"; sourceTree = ""; }; - 0E1FE890549221386D156915EA82E179 /* FIRCLSNetworkResponseHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSNetworkResponseHandler.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSNetworkResponseHandler.h; sourceTree = ""; }; - 0EDA2745EF3D3082870D8EE32F2459C1 /* GULUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULUserDefaults.m; path = GoogleUtilities/UserDefaults/GULUserDefaults.m; sourceTree = ""; }; - 0F521A514C493423191A951CFF5719BD /* FIRCLSURLSession_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSession_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSession_PrivateMethods.h; sourceTree = ""; }; - 0FD5851DC0FF8867204AB393DB83EB1A /* FIRCLSConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSConstants.m; path = Crashlytics/Shared/FIRCLSConstants.m; sourceTree = ""; }; + 0C89C537DCF620E7C31B5E37533C41E3 /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; + 0CC26984BC5A8059EF2B66552655E014 /* FIRCLSURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSession.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSession.m; sourceTree = ""; }; + 0CC9A84D8A8E84F61DF89AD3CDD5B556 /* FirebaseCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCore-umbrella.h"; sourceTree = ""; }; + 0D2F5669976341F2D3BA082DD254619A /* GTMSessionUploadFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionUploadFetcher.m; path = Source/GTMSessionUploadFetcher.m; sourceTree = ""; }; + 0D3672BEF934C6201FCDEF325C82FDE7 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; + 0DFD42415005A6A0471AC17658F59481 /* FIRCLSNetworkClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSNetworkClient.m; path = Crashlytics/Crashlytics/Controllers/FIRCLSNetworkClient.m; sourceTree = ""; }; + 0E0948EC73F7E32F0DA0FF1DAA2FFDC0 /* FIRCLSDwarfExpressionMachine.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDwarfExpressionMachine.c; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfExpressionMachine.c; sourceTree = ""; }; + 0EFAC56EC3F4833109F37DADC96AE559 /* CosmosSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosSettings.swift; path = Cosmos/CosmosSettings.swift; sourceTree = ""; }; + 0EFB846CBA530270DD3C0167CC34CED4 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift"; sourceTree = ""; }; + 0F5ADEC945E94C9EB23054E7EFD12E57 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 0FC360B47F0B7A2409CFAA057E8872A8 /* FIRInstanceIDAPNSInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAPNSInfo.h; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.h; sourceTree = ""; }; 1042D9C09D0C85A997B23A48491ACADB /* Pods-FoodScanTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FoodScanTests.modulemap"; sourceTree = ""; }; - 104D5DA6913A855FB4AFC3E13DDB04FE /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; - 10B470C1AE0F980485D2F5676F3DC962 /* GDTCCTCompressionHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTCompressionHelper.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h; sourceTree = ""; }; - 10F4994921385872D8B06CEC9A89568C /* GTLRDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDefines.h; path = Source/GTLRDefines.h; sourceTree = ""; }; - 1110EF1602A48045BFB5CD62C1448ABA /* FirebaseInstanceID.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstanceID.xcconfig; sourceTree = ""; }; - 113E2D26B77DB74E66A34846DA654AB0 /* GTLRFramework.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRFramework.m; path = Source/Utilities/GTLRFramework.m; sourceTree = ""; }; - 11D1246044E4C62FC53A82B49BB4FDD7 /* FBLPromise+Race.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Race.h"; path = "Sources/FBLPromises/include/FBLPromise+Race.h"; sourceTree = ""; }; - 11DCBC916CDC08D9DD43E02774AC44EB /* FirebaseCrashlytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCrashlytics.xcconfig; sourceTree = ""; }; - 11E74B1E148A37C349FF1E2100145370 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; - 127714FBDBB436BFCD96B4A7967A516B /* FBLPromises.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromises.h; path = Sources/FBLPromises/include/FBLPromises.h; sourceTree = ""; }; - 12D0C9787477C44B59BBF21522A930E9 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; - 1336A0B9C0B72881F125CAF60429A5B0 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - 13562C939F629FC48B16DAA5A110EF57 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = ""; }; - 1375FF40108F4191B783D01D64AA241F /* FIRCLSProcessReportOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSProcessReportOperation.h; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.h; sourceTree = ""; }; - 1379A57FD6611401929ECDF70BEB99AE /* FIRCLSDwarfUnwindRegisters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDwarfUnwindRegisters.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwindRegisters.h; sourceTree = ""; }; - 13A714E71A154A8A4790324863DF9A67 /* GTLRUploadParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUploadParameters.h; path = Source/Objects/GTLRUploadParameters.h; sourceTree = ""; }; + 105BA024A49B3F6E5E2F5FED4A2777AD /* FIRCLSRecordHost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSRecordHost.m; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.m; sourceTree = ""; }; + 10F53FE67A551D64E6511AC55719FBE9 /* FIRCLSReportAdapter_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportAdapter_Private.h; path = Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter_Private.h; sourceTree = ""; }; + 1160D20C92B38262D3D9BD8BF2119929 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = ""; }; + 11DBDBE1FA748C6E5D17890F6D4ECD28 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyJSON.modulemap; sourceTree = ""; }; + 1256F0F46F7145F1D3A9033ABDEDCE38 /* FIRCLSByteUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSByteUtility.m; path = Crashlytics/Shared/FIRCLSByteUtility.m; sourceTree = ""; }; + 12D65F0D204A6F8D2259A875878A315D /* BannerPositionFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerPositionFrame.swift; path = NotificationBanner/Classes/BannerPositionFrame.swift; sourceTree = ""; }; + 130A17D803FEA65ADC300A190331B88B /* GDTCCTNanopbHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTNanopbHelpers.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m; sourceTree = ""; }; + 134A1D5D0508074FBA514F7B8A3623C4 /* GDTCORReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORReachability.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORReachability.h; sourceTree = ""; }; + 139B329630BBF9CED91B62FDB1D7E229 /* GDTCORPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORPrioritizer.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h; sourceTree = ""; }; + 13B70B946FA466D66B5DCEDD50D3E651 /* FIRCLSProcessReportOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSProcessReportOperation.h; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.h; sourceTree = ""; }; 13C8C8B254851998F9289F71229B28A2 /* FirebaseInstallations.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseInstallations.framework; path = FirebaseInstallations.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 13F3B727CBE66CB322BE9EB4382AED89 /* FIRInstanceID_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID_Private.h; path = Firebase/InstanceID/Private/FIRInstanceID_Private.h; sourceTree = ""; }; - 1488555ACB4273A4F0AF2E780589ABF6 /* Popover.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Popover.xcconfig; sourceTree = ""; }; - 14DD092C5B0FC7F9773D451C93BF0BD6 /* FIRInstallationsSingleOperationPromiseCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsSingleOperationPromiseCache.m; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m; sourceTree = ""; }; - 1528CA2CFC35F900E21D7852758AE895 /* GDTCCTUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTUploader.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h; sourceTree = ""; }; - 155157D7F64D7D917D0C4E5F7613E7DE /* GDTCORStoredEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORStoredEvent.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m; sourceTree = ""; }; - 15D08CFDB7349E8ED65953ACC0B6A055 /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift; sourceTree = ""; }; - 15D8CD930392A0C1D9CFD6E1113056F7 /* GTLRDateTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDateTime.m; path = Source/Objects/GTLRDateTime.m; sourceTree = ""; }; - 15EF81BA44E0B67624E10344C43BC403 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; - 166C0C862584635307AE5FDEAC9376C3 /* GoogleDataTransport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransport-dummy.m"; sourceTree = ""; }; - 1687D33C0EBD122C338051DF47CBE529 /* BannerPositionFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerPositionFrame.swift; path = NotificationBanner/Classes/BannerPositionFrame.swift; sourceTree = ""; }; - 16EC77150DF3C5A4E0E488C9EFED5C35 /* FIRInstanceIDUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDUtilities.m; path = Firebase/InstanceID/FIRInstanceIDUtilities.m; sourceTree = ""; }; - 171C03052F2860CA008BEB65E3DC28AA /* FIRCLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReport.h; path = Crashlytics/Crashlytics/Models/FIRCLSReport.h; sourceTree = ""; }; - 172B68489891580021F7DED933D5BD75 /* GPBProtocolBuffers_RuntimeSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBProtocolBuffers_RuntimeSupport.h; path = objectivec/GPBProtocolBuffers_RuntimeSupport.h; sourceTree = ""; }; - 176CB56552D2469ACF1CD5FFD351F090 /* FIRCLSSerializeSymbolicatedFramesOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSerializeSymbolicatedFramesOperation.m; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.m; sourceTree = ""; }; - 17E28A08FB4D1F9D788AAB1AD3609E6D /* nanopb.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = nanopb.xcconfig; sourceTree = ""; }; - 18120D48612929C8BC286B99E0D14BD4 /* FIRAppAssociationRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppAssociationRegistration.h; path = FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h; sourceTree = ""; }; - 184AB3679BEDBDBEE19D6CCE99E6C24E /* FIRInstanceIDCheckinStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinStore.m; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.m; sourceTree = ""; }; - 18E414BBC594641320ED3125928D89AB /* GoogleUtilities-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-prefix.pch"; sourceTree = ""; }; - 18E7BC86535B3F1D66E9FD9B9D1664D3 /* RightToLeft.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RightToLeft.swift; path = Cosmos/Helpers/RightToLeft.swift; sourceTree = ""; }; - 193B805353E7AA02E9A0398BAC804137 /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift"; sourceTree = ""; }; - 19C1C5CA8EBE688B9847923F29F59151 /* FIRCLSFABAsyncOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFABAsyncOperation.m; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation.m; sourceTree = ""; }; - 1A1869AFB1D2703DDFC7634663C008DB /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; - 1ACCBC89C99D609BF01757C4EC4BD55A /* FIRCLSUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUserDefaults.m; path = Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.m; sourceTree = ""; }; - 1AD06A2F1B253EA35A18E0C78DC2AB25 /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift"; sourceTree = ""; }; - 1B1FD9712B1050A7C12BEA0BF6EDDA38 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - 1C21946C1202A1376ED7C530907C467B /* FIRInstallationsIDController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIDController.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h; sourceTree = ""; }; - 1C437CC3933CE12ACEBF5AB409E2111E /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/NSButton+WebCache.m"; sourceTree = ""; }; - 1CA6DEFF9F93E293473407917C7CA492 /* pb_encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_encode.h; sourceTree = ""; }; - 1CBE2DBF2678CC3C8C0C58D83C5A3A19 /* FIRInstanceIDKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeychain.m; path = Firebase/InstanceID/FIRInstanceIDKeychain.m; sourceTree = ""; }; - 1D46098E02D3DA60EBC49EAB6B36BEF6 /* Protobuf.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Protobuf.modulemap; sourceTree = ""; }; - 1D776878F1F8A999ED799A0EF9BD39A6 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - 1E17171112D417F262F8402CFAC4E287 /* Any.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Any.pbobjc.m; path = objectivec/google/protobuf/Any.pbobjc.m; sourceTree = ""; }; - 1E2593D63D2D3351911A218E362FD2D5 /* GDTCORUploadCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadCoordinator.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h; sourceTree = ""; }; - 1E38FB537FC7C95F88981FA1E4B34FEF /* FIRCLSdSYM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSdSYM.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSdSYM.h; sourceTree = ""; }; - 1EEE194C41C9436DD8E5845F68DFC92F /* FIRCLSApplicationIdentifierModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSApplicationIdentifierModel.m; path = Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.m; sourceTree = ""; }; - 1F1DBF2473A97D7ACF4EAA2DBE04C3FF /* FIRCLSSymbolicationOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSymbolicationOperation.m; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.m; sourceTree = ""; }; - 1F5199404C80F781F8D73A1512C4079B /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; - 1F87699E341B1AD8AF84A843CBB8F738 /* StarFillMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StarFillMode.swift; path = Cosmos/StarFillMode.swift; sourceTree = ""; }; - 1F8D070F2960435F822C62AF23195C2E /* FIRCoreDiagnosticsConnector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnosticsConnector.m; path = FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m; sourceTree = ""; }; - 1FEF05809A9E6884D039A58FCB543A1B /* GPBMessage_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBMessage_PackagePrivate.h; path = objectivec/GPBMessage_PackagePrivate.h; sourceTree = ""; }; - 201DFD6D4C1C8688B222BD2D08B09D9B /* FBLPromise+Any.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Any.m"; path = "Sources/FBLPromises/FBLPromise+Any.m"; sourceTree = ""; }; - 203DBFDB75B494F2E0981411882BF48A /* FIRInstallationsLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsLogger.h; path = FirebaseInstallations/Source/Library/FIRInstallationsLogger.h; sourceTree = ""; }; + 13D19DD605D444B64502AE7B2FDFF421 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite */ = {isa = PBXFileReference; includeInIndex = 1; name = rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite; path = Resources/GoogleMVTextDetectorResources/rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite; sourceTree = ""; }; + 14B8035530847BA363A559EA8C21A565 /* GULNetworkURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkURLSession.m; path = GoogleUtilities/Network/GULNetworkURLSession.m; sourceTree = ""; }; + 14E12920AD2C9BBB65245D36939FF49E /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = FirebaseCore/Sources/Private/FIRComponentType.h; sourceTree = ""; }; + 17ACDB5A1C70A76D5BAFEDC4DFAC77F1 /* GDTCORLifecycle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORLifecycle.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m; sourceTree = ""; }; + 184A2295511060131A9D8BFA755EACAA /* Protobuf-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Protobuf-Info.plist"; sourceTree = ""; }; + 18E7AA2824D4E8F3F3733CE692EC3EF8 /* FirebaseMLVision.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseMLVision.framework; path = Frameworks/FirebaseMLVision.framework; sourceTree = ""; }; + 1989B68DD23DE1903315884F1105D5F0 /* Popover.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Popover.swift; path = Classes/Popover.swift; sourceTree = ""; }; + 1A09D4791E05F8030D28E2120BB1E538 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; + 1A2417E2FA4912E746720C2A1FAB3273 /* FirebaseInstallations-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseInstallations-Info.plist"; sourceTree = ""; }; + 1A6796375F866CEEF3580B74B0550633 /* FIRBundleUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRBundleUtil.m; path = FirebaseCore/Sources/FIRBundleUtil.m; sourceTree = ""; }; + 1A7E765E557A0A9DEE90E31AE71B25FE /* FBLPromise+Retry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Retry.h"; path = "Sources/FBLPromises/include/FBLPromise+Retry.h"; sourceTree = ""; }; + 1A953132A3E543C9634E362AA09C1E6E /* FBLPromises.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FBLPromises.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1AE2125D1A39786B0D5853D55291445F /* FIRCLSSettingsOnboardingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSettingsOnboardingManager.h; path = Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.h; sourceTree = ""; }; + 1AE340ABA639D6EE62F2FEBBE010F3B2 /* GPBArray.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBArray.m; path = objectivec/GPBArray.m; sourceTree = ""; }; + 1AE5AC455B4B84BB10325AA6D5634710 /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = FirebaseCore/Sources/Private/FIRLogger.h; sourceTree = ""; }; + 1B007BDC6B4A7BEBDDEFFE9B7EC5817E /* FIRExceptionModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRExceptionModel.m; path = Crashlytics/Crashlytics/FIRExceptionModel.m; sourceTree = ""; }; + 1B099F2879DF5A05B13BFD58E7708F83 /* GULNetworkConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkConstants.m; path = GoogleUtilities/Network/GULNetworkConstants.m; sourceTree = ""; }; + 1B2DBA9C589B877CD549555F4F97BAA1 /* FirebaseCoreInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCoreInternal.h; path = FirebaseCore/Sources/Private/FirebaseCoreInternal.h; sourceTree = ""; }; + 1B784A277FD94DD76E5D20A6BC981A09 /* GTLRBatchQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchQuery.m; path = Source/Objects/GTLRBatchQuery.m; sourceTree = ""; }; + 1B8D689EEF366A0B62A1E0B85529271C /* GULSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSwizzler.m; path = GoogleUtilities/MethodSwizzler/GULSwizzler.m; sourceTree = ""; }; + 1B987C7413496B790D285162F9AFFD1F /* SDWebImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageFrame.m; path = SDWebImage/SDWebImageFrame.m; sourceTree = ""; }; + 1BB8CB14A002C709BEF0A96BC7CF674B /* GDTCOREvent+GDTCCTSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GDTCOREvent+GDTCCTSupport.m"; path = "GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m"; sourceTree = ""; }; + 1D35AD3836F74474711E6CCE4AEF4F37 /* FIRCLSReportUploader_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportUploader_Private.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader_Private.h; sourceTree = ""; }; + 1DA9886F268B00AFC14B5D1A31F6D319 /* FIRInstanceIDVersionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDVersionUtilities.h; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.h; sourceTree = ""; }; + 1E25D0CF315E9E68A8EE102CF8C97396 /* Duration.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Duration.pbobjc.h; path = objectivec/google/protobuf/Duration.pbobjc.h; sourceTree = ""; }; + 1E39C7A0FB1F7E5F0F483ECDD00023D9 /* FIRCLSReportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportManager.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.h; sourceTree = ""; }; + 1EF5240AC00EB95211C7D849643A4C37 /* GoogleUtilities-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-prefix.pch"; sourceTree = ""; }; + 1F01BB716557B9777A7EC6359C0EABDD /* GDTCCTPrioritizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTPrioritizer.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m; sourceTree = ""; }; + 1F070582E7965E9CC4E800B1407041D1 /* FIRCLSURLSessionDataTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDataTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDataTask.h; sourceTree = ""; }; + 1FC7EA4DA5E3DCC2BAE07A6FDE2F12B8 /* FIRCLSDwarfUnwind.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDwarfUnwind.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.h; sourceTree = ""; }; + 20305497DC1C08C7DCBADB16AFBF68E0 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = FirebaseCore/Sources/Private/FIRLibrary.h; sourceTree = ""; }; + 205BC90A49F80DF580E56C108FA87694 /* GDTCORTransformer_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransformer_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h; sourceTree = ""; }; 2095243CBEF52A9869069E52A0A32722 /* Pods_FoodScanUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FoodScanUITests.framework; path = "Pods-FoodScanUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2111F369D0BEC039701379A7637608C1 /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = ""; }; - 21A490CB5C95FC7D5694E080845DD5A8 /* FIRCLSStackFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSStackFrame.m; path = Crashlytics/Crashlytics/Models/FIRCLSStackFrame.m; sourceTree = ""; }; + 211A1FF36E47056373DC5B02ADD65CAA /* FIRInstanceIDAPNSInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAPNSInfo.m; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.m; sourceTree = ""; }; + 212F6B35EBC2A6D01955AAA719934409 /* GDTCORTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORTransformer.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m; sourceTree = ""; }; + 21A0969C342AD5A731788276912DB3B3 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; + 21A0E1A218555ACCB8A88FF0306CC814 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 21B7DFD552042FCE7B62CF7E4CA03D4A /* Pods-FoodScanUITests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoodScanUITests-Info.plist"; sourceTree = ""; }; - 21F3D81A3DECEC5F5BF291ECEB910C63 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; - 21F88122FBE496F8E98D8F854B6018DA /* GPBWellKnownTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBWellKnownTypes.h; path = objectivec/GPBWellKnownTypes.h; sourceTree = ""; }; - 2221CFD6E463C0545D36ADAF0790BD8B /* GPBUnknownFieldSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownFieldSet.h; path = objectivec/GPBUnknownFieldSet.h; sourceTree = ""; }; - 2223D0AE6CC3F4F4053E2927DC73722F /* nanopb-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-prefix.pch"; sourceTree = ""; }; - 224825CB45FEBBD9EC76DED37E3D8163 /* FIRInstallationsKeychainUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsKeychainUtils.m; path = FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m; sourceTree = ""; }; - 22DFC8C7387EA331AFDA2DFEEB16EF0E /* FIRInstallationsItem+RegisterInstallationAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstallationsItem+RegisterInstallationAPI.h"; path = "FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h"; sourceTree = ""; }; - 23C8281966B9F5CEFFDBAD860A19B167 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/UIView+WebCache.m"; sourceTree = ""; }; - 23C873B4B09D16C6D83D7A1CE9996FF5 /* GoogleDataTransportCCTSupport.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleDataTransportCCTSupport.modulemap; sourceTree = ""; }; - 23ED48620ACC2AC79566B026D0E70624 /* FIRCLSFCRAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFCRAnalytics.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.m; sourceTree = ""; }; - 23ED872068113D20E34A7C0FE767EDB5 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = ""; }; - 24431E1D279EDEB846674E18AAF45C23 /* NSError+FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+FIRInstanceID.m"; path = "Firebase/InstanceID/NSError+FIRInstanceID.m"; sourceTree = ""; }; - 244F18C6E16488B0C60980FDAD543DBD /* GPBRootObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBRootObject.m; path = objectivec/GPBRootObject.m; sourceTree = ""; }; - 249326C9D7593218704EF5F35BC508CB /* FirebaseAnalyticsInterop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAnalyticsInterop.xcconfig; sourceTree = ""; }; - 24A2DAF94D528FA79A9FAE94E80B4A2D /* FIRCrashlytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCrashlytics.m; path = Crashlytics/Crashlytics/FIRCrashlytics.m; sourceTree = ""; }; - 24BD3A08F1877181B4373653FB8409A8 /* GDTCORLifecycle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORLifecycle.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m; sourceTree = ""; }; - 24E4D2DA752C8B8232CB21A75A2C5920 /* Protobuf-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Protobuf-prefix.pch"; sourceTree = ""; }; - 24FEEC4F01969259F0DFF7C0AE37E300 /* SDWebImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoder.m; path = SDWebImage/SDWebImageCoder.m; sourceTree = ""; }; + 21D290B09BE53B6F496BCE35678618EC /* FIRInstanceIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenStore.m; path = Firebase/InstanceID/FIRInstanceIDTokenStore.m; sourceTree = ""; }; + 220A6F99B0CFCAB5A40FD4C865F680CB /* Cosmos-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cosmos-prefix.pch"; sourceTree = ""; }; + 223FB65C2ACDF523FD2D86058DD9D428 /* FIRCLSURLSession_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSession_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSession_PrivateMethods.h; sourceTree = ""; }; + 226F71F6381F7D176D1C56BB6F6DBEB9 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; + 2271A63D75EF710B86F55696070BBC39 /* FIRCLSInternalLogging.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSInternalLogging.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSInternalLogging.c; sourceTree = ""; }; + 2298E65D24495F9C675DC8C8D0BE03F4 /* FIRInstanceIDCheckinPreferences_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences_Private.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h; sourceTree = ""; }; + 23347178C70E04D5133F478E0C1F89E1 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = FirebaseCore/Sources/Private/FIRLibrary.h; sourceTree = ""; }; + 235E9D3725149138D33E735E968FD8FD /* FIRDiagnosticsData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDiagnosticsData.m; path = FirebaseCore/Sources/FIRDiagnosticsData.m; sourceTree = ""; }; + 239E37FFD903E487676ACF03D36562BE /* pb_encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_encode.h; sourceTree = ""; }; + 24180CA98D9243B4E8D9DE6779BA461C /* nanopb-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "nanopb-Info.plist"; sourceTree = ""; }; + 24265D8A92D0D8109DDBE73F5D11A708 /* GPBMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBMessage.m; path = objectivec/GPBMessage.m; sourceTree = ""; }; + 2430249FCEB29B6B2B00A0D14D1FC81B /* FIRCLSURLSessionUploadTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionUploadTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionUploadTask.m; sourceTree = ""; }; + 246B1E9BF647DAA3DABD8B123FD387CF /* FBLPromise+Validate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Validate.h"; path = "Sources/FBLPromises/include/FBLPromise+Validate.h"; sourceTree = ""; }; + 24C066E48B587792E50A996B197E5BFA /* FIRCLSApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSApplication.m; path = Crashlytics/Crashlytics/Components/FIRCLSApplication.m; sourceTree = ""; }; 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GoogleToolboxForMac.framework; path = GoogleToolboxForMac.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 252BB1ED6D7DB783EE213B9B808B365F /* Empty.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Empty.pbobjc.h; path = objectivec/google/protobuf/Empty.pbobjc.h; sourceTree = ""; }; - 255CE099268D211663D284BCE9B1E950 /* FIRCLSFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFileManager.h; path = Crashlytics/Crashlytics/Models/FIRCLSFileManager.h; sourceTree = ""; }; - 2587798F5A38D40808ECCDA0C060CCAD /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 258F6A0FFC8420F4879E82C0A76530DB /* FBLPromise+Always.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Always.m"; path = "Sources/FBLPromises/FBLPromise+Always.m"; sourceTree = ""; }; - 25BBF0E8A1196A9718C1F6DB27FE4773 /* FIRCLSAllocate.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSAllocate.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSAllocate.c; sourceTree = ""; }; - 25D9219D08773A7DC222DA0E8CF74521 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift"; sourceTree = ""; }; - 25DF81714902CCBD69940F115076B5A1 /* StatusBarNotificationBanner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusBarNotificationBanner.swift; path = NotificationBanner/Classes/StatusBarNotificationBanner.swift; sourceTree = ""; }; - 25E8DE32B6819C68165F985EB03710CD /* FIRCLSURLSessionTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionTask.m; sourceTree = ""; }; - 266FA7B9697725B97625EBEAEC260167 /* FBLPromise+Reduce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Reduce.h"; path = "Sources/FBLPromises/include/FBLPromise+Reduce.h"; sourceTree = ""; }; - 267FF34EDA410A680D9E1F3AD3E2B219 /* pb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb.h; sourceTree = ""; }; - 2683EF76CCA3268707D37B93DF70B48F /* MarqueeLabel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MarqueeLabel.xcconfig; sourceTree = ""; }; - 2692559EEA9075EE448BF6164879F242 /* FIRInstanceID+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceID+Private.h"; path = "Firebase/InstanceID/Private/FIRInstanceID+Private.h"; sourceTree = ""; }; - 26EA8DA73DD699790FA3015A3A0F34A8 /* FIRInstanceIDCheckinPreferences+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDCheckinPreferences+Internal.h"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"; sourceTree = ""; }; - 277CBC1725199B614D7F4B30BAE88511 /* GTLRVision.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVision.h; path = Source/GeneratedServices/Vision/GTLRVision.h; sourceTree = ""; }; - 2788AA39E038004180BDDEEA6F325D15 /* GoogleAPIClientForREST.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.xcconfig; sourceTree = ""; }; - 2792E2BE386657EA1DBC95819B8030F7 /* GoogleUtilities-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleUtilities-dummy.m"; sourceTree = ""; }; - 27D3CC13234B911423F70C4485592250 /* FBLPromise+Timeout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Timeout.m"; path = "Sources/FBLPromises/FBLPromise+Timeout.m"; sourceTree = ""; }; - 282F89832FA8018FFB67B1D0E076A93D /* FBLPromise+Catch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Catch.h"; path = "Sources/FBLPromises/include/FBLPromise+Catch.h"; sourceTree = ""; }; - 286BE96E9D2BFCE6F1B209E475D51C2A /* FIRInstanceIDTokenOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.h; sourceTree = ""; }; - 288942D3FB3AAC7BEF6D5EF82B17F8E1 /* SDWebImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCodersManager.h; path = SDWebImage/SDWebImageCodersManager.h; sourceTree = ""; }; - 28D0585AA5E47C45F8B511D82C6D94CE /* FIRInstanceIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStore.m; path = Firebase/InstanceID/FIRInstanceIDStore.m; sourceTree = ""; }; - 29B64BB3B3198FA97314CB7128498F97 /* GTLRService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRService.h; path = Source/Objects/GTLRService.h; sourceTree = ""; }; - 29CFF77175EDE90350F936491E5B8487 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; - 2A12CC6B8D6B35313E68D3723F28B00A /* GTMLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMLogger.m; path = Foundation/GTMLogger.m; sourceTree = ""; }; - 2A76AB70F121D087B32765FFECC2FD49 /* FIRInstallationsKeychainUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsKeychainUtils.h; path = FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h; sourceTree = ""; }; - 2AF42CD73A32C7487FEC389000C629A0 /* FIRCLSAsyncOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSAsyncOperation.h; path = Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation.h; sourceTree = ""; }; - 2B6FC215A9700997B393E1DA3A96F70C /* Protobuf-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Protobuf-Info.plist"; sourceTree = ""; }; - 2B9109100177A4B153D68E3380403AFD /* GTMNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSData+zlib.m"; path = "Foundation/GTMNSData+zlib.m"; sourceTree = ""; }; - 2BBD3F5741D2641ECE344F7095D282A0 /* FBLPromise+Async.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Async.m"; path = "Sources/FBLPromises/FBLPromise+Async.m"; sourceTree = ""; }; - 2C1A7EE05E7799B1B6BC98EE6F6DE974 /* FIRCLSDataCollectionArbiter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDataCollectionArbiter.h; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.h; sourceTree = ""; }; - 2C33BE09CFBFAF580CF62052631DCC1C /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = FirebaseCore/Sources/Private/FIRComponentContainer.h; sourceTree = ""; }; - 2C3C16A25BE5F2D32BDCABC1BFF9D5BE /* MarqueeLabel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MarqueeLabel.swift; path = Sources/Swift/MarqueeLabel.swift; sourceTree = ""; }; - 2C637715DB1FAF7D73CB9DE3C781952F /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; - 2D00788B11B20C5252B257AF56EE17CE /* SDWebImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCodersManager.m; path = SDWebImage/SDWebImageCodersManager.m; sourceTree = ""; }; - 2D17953EFDFF6E4BBCB3C59548D9231B /* FIRCLSExecutionIdentifierModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSExecutionIdentifierModel.h; path = Crashlytics/Crashlytics/Models/FIRCLSExecutionIdentifierModel.h; sourceTree = ""; }; - 2D1F925DC7D23DF0C9E09EF7C2F797B8 /* FIRCLSURLSessionTask_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionTask_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionTask_PrivateMethods.h; sourceTree = ""; }; - 2D27E858B1471D4A68AB5376727440BE /* FIRDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDiagnosticsData.h; path = FirebaseCore/Sources/Private/FIRDiagnosticsData.h; sourceTree = ""; }; - 2D31B9DEEC1844EC5474CE993E447D92 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; - 2D44413BA579E2038C70A2E903A27C8B /* FIRVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVersion.m; path = FirebaseCore/Sources/FIRVersion.m; sourceTree = ""; }; - 2D73EC5F143FCE92B2ACC19BDCBE94F2 /* GULLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLogger.h; path = GoogleUtilities/Logger/Private/GULLogger.h; sourceTree = ""; }; + 25474AD3FF714DE564D9D67FE1E1BE0D /* MarqueeLabel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MarqueeLabel-Info.plist"; sourceTree = ""; }; + 2558C77AEC62D5BB6947D93801314E86 /* FIRCLSOnboardingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSOnboardingOperation.h; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.h; sourceTree = ""; }; + 2587D08AE0016E860519C5FD3D686FAC /* FIRCLSFCRAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFCRAnalytics.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.h; sourceTree = ""; }; + 25A113C0F56A83211D33B7BD1C8F7F7E /* FIRInstallationsAPIService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAPIService.h; path = FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h; sourceTree = ""; }; + 25B5FC54BEC5EAC92EF781F8718DC1E8 /* FirebaseCrashlytics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCrashlytics-dummy.m"; sourceTree = ""; }; + 2608AA9BA1CF6274A5D49DE39B3C8E37 /* GTMSessionFetcher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-umbrella.h"; sourceTree = ""; }; + 264E9AD7682249782A53637E3072949D /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; + 2688F6CA8134AD73A3FDE51E86D00E6F /* CosmosRating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosRating.swift; path = Cosmos/CosmosRating.swift; sourceTree = ""; }; + 26912EC85A74DDF4B0BA50AC69C11BA6 /* FIRCoreDiagnosticsInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsInterop.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h; sourceTree = ""; }; + 269C194EB9A20E615E29BB75D5C7D527 /* FIRCLSFileManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFileManager.h; path = Crashlytics/Crashlytics/Models/FIRCLSFileManager.h; sourceTree = ""; }; + 26C9CCCA375602E478F0284F850A81E8 /* FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceID.m; path = Firebase/InstanceID/FIRInstanceID.m; sourceTree = ""; }; + 2714913F1B548FBE2E8BBAF940D91087 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = ""; }; + 27742BA112387B2A8234BCB4938176C2 /* GPBCodedOutputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBCodedOutputStream.m; path = objectivec/GPBCodedOutputStream.m; sourceTree = ""; }; + 278D5750B9CBED512AF239D1476A756B /* FIRCLSInstallIdentifierModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSInstallIdentifierModel.h; path = Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.h; sourceTree = ""; }; + 27937E239F958C7BA2BBDD9F41E34459 /* FIRCLSUnwind_arch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUnwind_arch.h; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arch.h; sourceTree = ""; }; + 27BE3A733B9543E81E022A89F6FFF3DB /* Cosmos-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cosmos-umbrella.h"; sourceTree = ""; }; + 27C818B870E913B7A4C4505E4B8B8C97 /* GPBRootObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBRootObject.m; path = objectivec/GPBRootObject.m; sourceTree = ""; }; + 27E5D866472ED3B2F5BD84463F962454 /* FIRInstanceID+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceID+Private.h"; path = "Firebase/InstanceID/Private/FIRInstanceID+Private.h"; sourceTree = ""; }; + 27EAD66CFC2F731E3BC66E47C538258F /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 280269965A1B9153D4595919905D1C32 /* FirebaseCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCore-dummy.m"; sourceTree = ""; }; + 286A3C615CB4516507DBE30E526EA329 /* GPBStruct.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBStruct.pbobjc.h; path = objectivec/GPBStruct.pbobjc.h; sourceTree = ""; }; + 289D475971DCFA92C61D9AC883992DC2 /* FIRCLSUUID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUUID.m; path = Crashlytics/Shared/FIRCLSUUID.m; sourceTree = ""; }; + 28BA169B0A4D3D1C2FEEAA3AE66334C3 /* GDTCORConsoleLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORConsoleLogger.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m; sourceTree = ""; }; + 28BC94A61171B2A960FAE649A6D5779F /* UILoadControl-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-umbrella.h"; sourceTree = ""; }; + 292331EB8E2A2E71C7B62D57ABA9A5E4 /* GPBUnknownFieldSet_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownFieldSet_PackagePrivate.h; path = objectivec/GPBUnknownFieldSet_PackagePrivate.h; sourceTree = ""; }; + 29B23DC49D34EC9FA684C3D91AFB928E /* FIRInstanceID_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID_Private.h; path = Firebase/InstanceID/Private/FIRInstanceID_Private.h; sourceTree = ""; }; + 29DAD260DB429958D5D76EA47AAF1922 /* GPBWireFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBWireFormat.m; path = objectivec/GPBWireFormat.m; sourceTree = ""; }; + 29FBB33EF4657BDD997B0A3BA208E37D /* UILoadControl-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UILoadControl-dummy.m"; sourceTree = ""; }; + 2A555F2F8B8AB6D50F22ED7F53CDF9B4 /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = FirebaseCore/Sources/Private/FIRErrors.h; sourceTree = ""; }; + 2A95FCCFA2DD142994A1AD2D9B212760 /* FBLPromise+Recover.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Recover.m"; path = "Sources/FBLPromises/FBLPromise+Recover.m"; sourceTree = ""; }; + 2ADC5CA68CECF700C3C17ED9BC2FB369 /* Firebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Firebase.h; path = CoreOnly/Sources/Firebase.h; sourceTree = ""; }; + 2AFCB4CB497206301B135794487A4F3A /* FIRCLSLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSLogger.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSLogger.h; sourceTree = ""; }; + 2B3391BB00CBE605D3C345A721C9E149 /* FBLPromise+Always.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Always.h"; path = "Sources/FBLPromises/include/FBLPromise+Always.h"; sourceTree = ""; }; + 2B33CC9195CE4F71414BB45EF6D46A48 /* FirebaseMLVisionTextModel.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseMLVisionTextModel.framework; path = Frameworks/FirebaseMLVisionTextModel.framework; sourceTree = ""; }; + 2B7BAC5079D329FDC111CCE56A017D51 /* FIRCoreDiagnosticsInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsInterop.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h; sourceTree = ""; }; + 2B972E2CCDEFF41259D1B8F4C6A63113 /* GDTCORUploadCoordinator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORUploadCoordinator.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m; sourceTree = ""; }; + 2BC270E7A37E28A48C912291F69B3A50 /* GDTCORRegistrar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORRegistrar.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h; sourceTree = ""; }; + 2BCA8D3CB0C9B7E3BF941DCDA9E3D6AD /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; + 2BF5710ED1344E425B0C831ABE6C9BB9 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = FirebaseCore/Sources/Private/FIRLibrary.h; sourceTree = ""; }; + 2C37E7FC5903950C698066DC99ACE8E1 /* FIRAppAssociationRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAppAssociationRegistration.m; path = FirebaseCore/Sources/FIRAppAssociationRegistration.m; sourceTree = ""; }; + 2C54DA13D3992D8D4AE712D0CF6EF0A5 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; + 2D820227642805DA473DC8E1229F6E5C /* FIRCLSURLSessionDownloadTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionDownloadTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDownloadTask.m; sourceTree = ""; }; 2DA0D814DFCB860D31D7BCD63D795858 /* FirebaseInstanceID.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseInstanceID.framework; path = FirebaseInstanceID.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2DC483A2F12669CF56691C51CA34BE17 /* Timestamp.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Timestamp.pbobjc.h; path = objectivec/google/protobuf/Timestamp.pbobjc.h; sourceTree = ""; }; - 2E1A4A25FBEF7BDA5D0CC6F800F6667D /* GPBExtensionRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBExtensionRegistry.m; path = objectivec/GPBExtensionRegistry.m; sourceTree = ""; }; - 2E87A50F233BCC9A8C9914A5F18417B5 /* FIRCLSFABNetworkClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABNetworkClient.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSFABNetworkClient.h; sourceTree = ""; }; - 2EEF27E6B6AD9D0C498F01822C988A49 /* FirebaseInstallations-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseInstallations-umbrella.h"; sourceTree = ""; }; - 2F1732DBF4AAA30874ACF10EBA002190 /* Protobuf-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Protobuf-dummy.m"; sourceTree = ""; }; - 2F8388FEC897E63D9660F11A2A8AA536 /* FIRCLSDataParsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDataParsing.c; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.c; sourceTree = ""; }; - 2F89F3E850D1089EE2755116B5552347 /* GDTCORAssert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORAssert.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m; sourceTree = ""; }; - 2FE771C9DE0E5B6FDE315CD589F36060 /* FIRCLSProcessReportOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSProcessReportOperation.m; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.m; sourceTree = ""; }; - 3013760CB46015A7919E30420780BC49 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + 2DAD5FEB39636F27CE25313B8CB76247 /* FIRInstallationsSingleOperationPromiseCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsSingleOperationPromiseCache.m; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m; sourceTree = ""; }; + 2E21083AEF6081819F2618C954D99923 /* FIRCLSHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSHandler.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSHandler.h; sourceTree = ""; }; + 2EEEF5A00A5F6A9786E438B8F1B94A9C /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; + 2F0B41374FCA9A698C3E43E85BD7B570 /* GPBExtensionRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBExtensionRegistry.h; path = objectivec/GPBExtensionRegistry.h; sourceTree = ""; }; + 2F6BA76D8F6D0E6233D4DBC94569CEA8 /* FBLPromise+All.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+All.m"; path = "Sources/FBLPromises/FBLPromise+All.m"; sourceTree = ""; }; + 30699B4E727D50E4CF098A743DCE2EC4 /* GoogleDataTransportCCTSupport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransportCCTSupport-dummy.m"; sourceTree = ""; }; 3082C19F924976EF30B3CD19CDC8D260 /* Pods-FoodScanTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FoodScanTests-acknowledgements.markdown"; sourceTree = ""; }; - 3098FB3BE79FB8DB799D50C6A5AFCEBC /* FBLPromise+Wrap.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Wrap.m"; path = "Sources/FBLPromises/FBLPromise+Wrap.m"; sourceTree = ""; }; - 30EDB22C1AB6AC0AF295CC0430B7D9FA /* GDTCORClock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORClock.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORClock.m; sourceTree = ""; }; - 319C7914F0943C339C779DE2644681C9 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = ""; }; - 319D8A27DB2C0C2D3AE5DB5508FCC503 /* FBLPromise+All.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+All.m"; path = "Sources/FBLPromises/FBLPromise+All.m"; sourceTree = ""; }; - 31A1E416F0F95C5C547D24129760FDD3 /* GTLRBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBase64.m; path = Source/Utilities/GTLRBase64.m; sourceTree = ""; }; - 327EF4186935E9FAA6E228C4FAC352E0 /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = ""; }; - 32FAF3F255049AA63D9A41DE1788BB37 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = ""; }; - 33284E1B68E3AC4EE9FA4DA535549978 /* FirebaseInstanceID-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseInstanceID-Info.plist"; sourceTree = ""; }; + 30D5BD7B39C59BCDABB6364FA88BCE0F /* FBLPromiseError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBLPromiseError.m; path = Sources/FBLPromises/FBLPromiseError.m; sourceTree = ""; }; + 3100F1B54F03053633365214D6F06F36 /* FIRCLSSymbolicationOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSymbolicationOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.h; sourceTree = ""; }; + 31394F59DC41ACD27AB09A63D19BC9B2 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = ""; }; + 3194F4D4194CDD2B9BCC4A4D19BE80FE /* FIRInstallationsItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsItem.m; path = FirebaseInstallations/Source/Library/FIRInstallationsItem.m; sourceTree = ""; }; + 31A9667DF5A6155DFC5A18F4AB5E3ADF /* FirebaseMLVisionTextModel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseMLVisionTextModel.xcconfig; sourceTree = ""; }; + 31BB25B787D0551ACC3F03F11E85288A /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugThreadValidation.h; path = DebugUtils/GTMDebugThreadValidation.h; sourceTree = ""; }; + 3226018FD0846D35B866D592F403BF46 /* FBLPromise+Recover.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Recover.h"; path = "Sources/FBLPromises/include/FBLPromise+Recover.h"; sourceTree = ""; }; + 32A3EAADED365A5D093DF124F6CEC89B /* FBLPromise+Reduce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Reduce.m"; path = "Sources/FBLPromises/FBLPromise+Reduce.m"; sourceTree = ""; }; + 32C000DC3744D0D8D5482446D109C95A /* GPBType.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBType.pbobjc.m; path = objectivec/GPBType.pbobjc.m; sourceTree = ""; }; + 32E066341C04A8D0C0A9CD030AED82C4 /* FIRInstanceIDTokenDeleteOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenDeleteOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m; sourceTree = ""; }; + 32F66E69732C725336DB59E668627E99 /* SDWebImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCodersManager.m; path = SDWebImage/SDWebImageCodersManager.m; sourceTree = ""; }; + 33224A4FD1302CD2C9D956007E24D28C /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; 3347A1AB6546F0A3977529B8F199DC41 /* FBLPromises.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FBLPromises.framework; path = PromisesObjC.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 338F4077203DEEE3583D9A6F735B5FA8 /* PromisesObjC-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromisesObjC-umbrella.h"; sourceTree = ""; }; - 339420666ED4390CC426038AC6A42DED /* GPBWireFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBWireFormat.h; path = objectivec/GPBWireFormat.h; sourceTree = ""; }; - 341AE2DF4BBC4C6CE3738E6333BBDEEC /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = ""; }; - 3422743084301B34D0B7D1DCC2A498F7 /* Cosmos.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Cosmos.modulemap; sourceTree = ""; }; - 3445BD06ACBE4FBB8CB22B04EAF052E9 /* FIRInstanceIDAuthKeyChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthKeyChain.m; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m; sourceTree = ""; }; - 345FB2309483C07479DE27C9E89EC4C1 /* FirebaseCrashlytics-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCrashlytics-umbrella.h"; sourceTree = ""; }; - 34ACE6A39F27F4B15138154B28D01832 /* Wrappers.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Wrappers.pbobjc.m; path = objectivec/google/protobuf/Wrappers.pbobjc.m; sourceTree = ""; }; - 350FB03C92F2891B0889975EC8CCF278 /* GTMReadMonitorInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMReadMonitorInputStream.m; path = Source/GTMReadMonitorInputStream.m; sourceTree = ""; }; - 357E1EA2BF1A3580154042B603D344AC /* NotificationBannerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NotificationBannerSwift-umbrella.h"; sourceTree = ""; }; - 362AF784EB515EF48142BC54D3776B99 /* GDTCORStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORStorage.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m; sourceTree = ""; }; - 364C9A63D8CC30BE0A1C8DF24AF8345E /* FIRComponentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentType.m; path = FirebaseCore/Sources/FIRComponentType.m; sourceTree = ""; }; - 3654A8B96ED0BB5746E53E053911C9B5 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; - 375DA008C108E01D23483CE9E823FAB7 /* FIRCLSCompactUnwind_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCompactUnwind_Private.h; path = Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind_Private.h; sourceTree = ""; }; - 377C972240AAE439687E756766BCE6BB /* GTLRVisionObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVisionObjects.h; path = Source/GeneratedServices/Vision/GTLRVisionObjects.h; sourceTree = ""; }; - 37E9C96A14308A6CF64520DC0FDE49E9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 381DD9D94ECE295C7E294372185119E5 /* FIRCLSMachO.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMachO.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m; sourceTree = ""; }; - 3821A2F76DB69CE7FED29D86A0DDF9D6 /* FIROptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROptions.m; path = FirebaseCore/Sources/FIROptions.m; sourceTree = ""; }; - 3875EA8066E95C3BE36E11E403BC5E70 /* FIRHeartbeatInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRHeartbeatInfo.h; path = FirebaseCore/Sources/Private/FIRHeartbeatInfo.h; sourceTree = ""; }; - 38D17775518BA33DA0603562EED5AD6B /* CosmosTouch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosTouch.swift; path = Cosmos/CosmosTouch.swift; sourceTree = ""; }; - 38EF0456BE7D62568E7D2334514F15D8 /* FIRCLSHost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSHost.h; path = Crashlytics/Crashlytics/Components/FIRCLSHost.h; sourceTree = ""; }; - 39A7B1FC2C965BA5039E209FCD1F491A /* GTLRBatchQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchQuery.m; path = Source/Objects/GTLRBatchQuery.m; sourceTree = ""; }; - 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 3A93DB52E62E9B50741ACD716EE9782A /* FIRInstallationsStoredAuthToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStoredAuthToken.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h; sourceTree = ""; }; - 3AB91D60CDC1AE5D080E511386B6AC89 /* GoogleDataTransport-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleDataTransport-Info.plist"; sourceTree = ""; }; - 3AE8D11AE60F0E1987211B8C3C234036 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - 3AF3F7A0110C035BEDF744DE8E296424 /* FIRInstanceIDLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDLogger.h; path = Firebase/InstanceID/FIRInstanceIDLogger.h; sourceTree = ""; }; + 3357A790B3FCE7B8CF729F3CCA00ADCB /* FIRCLSURLSessionDownloadTask_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDownloadTask_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDownloadTask_PrivateMethods.h; sourceTree = ""; }; + 33632E87B65B3693D9401FA93859540A /* FIRInstallationsStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStatus.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h; sourceTree = ""; }; + 338455B58D8A2AB9B4157537A4BD82F5 /* FBLPromise+Wrap.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Wrap.m"; path = "Sources/FBLPromises/FBLPromise+Wrap.m"; sourceTree = ""; }; + 346B09FDFC0110B6C7282B738B2A6D0F /* FIRInstanceIDURLQueryItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDURLQueryItem.m; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.m; sourceTree = ""; }; + 34FF6746E3D4CCF13B64CD7533FB6F34 /* FIRInstanceIDLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDLogger.m; path = Firebase/InstanceID/FIRInstanceIDLogger.m; sourceTree = ""; }; + 350A3A7AB41F9DAF623E198BC6AB391F /* GULAppEnvironmentUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppEnvironmentUtil.m; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m; sourceTree = ""; }; + 351DCDD88F92BFCA28E942CD174FFC26 /* FIRInstallationsLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsLogger.m; path = FirebaseInstallations/Source/Library/FIRInstallationsLogger.m; sourceTree = ""; }; + 35A4E8F1C7D92C0DE6F138DFCF76B0FC /* FIRLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLoggerLevel.h; path = FirebaseCore/Sources/Public/FIRLoggerLevel.h; sourceTree = ""; }; + 35A916B9C6E6E4354C17DB02CCC7FB25 /* FirebaseCoreDiagnostics-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCoreDiagnostics-Info.plist"; sourceTree = ""; }; + 35B432C987C625DEDCC05F238C34908F /* NotificationBannerUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationBannerUtilities.swift; path = NotificationBanner/Classes/NotificationBannerUtilities.swift; sourceTree = ""; }; + 35E120A256610C03AEF293E8F53145EF /* GoogleAppMeasurement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleAppMeasurement.framework; path = Frameworks/GoogleAppMeasurement.framework; sourceTree = ""; }; + 35E6A94E353ECC6C305C6F9531503CC0 /* FIRInstanceIDCheckinStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinStore.h; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.h; sourceTree = ""; }; + 367C6B028D79F5B23435147118F9E13C /* Protobuf-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Protobuf-umbrella.h"; sourceTree = ""; }; + 3782B6175FC2FB5D58643E0B5F52F290 /* FIRCLSURLSessionTask_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionTask_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionTask_PrivateMethods.h; sourceTree = ""; }; + 378EDDB11C3AA3A9CD84E4ED1E9F1436 /* FIRInstanceIDTokenInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenInfo.h; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.h; sourceTree = ""; }; + 386A8E0809348AA528207E8FB76EAF7B /* GDTCORTransport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORTransport.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m; sourceTree = ""; }; + 391613B67A215C98C7D97486ABA1C8A8 /* rpn_lstm_engine_tflite_latin.bincfg */ = {isa = PBXFileReference; includeInIndex = 1; name = rpn_lstm_engine_tflite_latin.bincfg; path = Resources/GoogleMVTextDetectorResources/rpn_lstm_engine_tflite_latin.bincfg; sourceTree = ""; }; + 3930BA0584713EA0EAD66495BAF973A1 /* FIRCLSReportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSReportManager.m; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.m; sourceTree = ""; }; + 39A2A2DE78B5E5FFF0A4E9D0CCD8F62A /* FIRBundleUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRBundleUtil.h; path = FirebaseCore/Sources/FIRBundleUtil.h; sourceTree = ""; }; + 3A7B786B88FC47C56B14154A91926FFB /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + 3ABED19E78AA6ED81CFC8C4FDD08F15C /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; 3B085F4712B9EA769F4B625EFB4FC056 /* Pods-FoodScanTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FoodScanTests-dummy.m"; sourceTree = ""; }; 3B0ABF2FCF02EE1AD689BB97F395775E /* Pods-FoodScanTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoodScanTests-acknowledgements.plist"; sourceTree = ""; }; - 3B0D44A079B3170506CD871C2DEF08E9 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; - 3BA63EA015D74AC95B0E7763DAA238FF /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - 3BA85A51C9E91E3CA088199F4987B4C3 /* Popover-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Popover-umbrella.h"; sourceTree = ""; }; - 3BAF2BF46A81419D044D95AE0BAF84D3 /* FIRInstallationsErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsErrors.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h; sourceTree = ""; }; - 3BB9CEE6AE017B602256B28A2EAF771B /* StarLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StarLayer.swift; path = Cosmos/StarLayer.swift; sourceTree = ""; }; - 3BCB8AB3C1D9C74B8D629978F586C43B /* FIRCLSDataCollectionToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSDataCollectionToken.m; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionToken.m; sourceTree = ""; }; - 3C6BE4A52089B9E15E09DDAAFD330A9A /* FBLPromise+Delay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Delay.h"; path = "Sources/FBLPromises/include/FBLPromise+Delay.h"; sourceTree = ""; }; - 3D6AABC3A2E387567671859837DD14D1 /* FirebaseCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCore-dummy.m"; sourceTree = ""; }; - 3D7DBD737973798A2F07D83B523D3876 /* FIRLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLoggerLevel.h; path = FirebaseCore/Sources/Public/FIRLoggerLevel.h; sourceTree = ""; }; - 3DF9B55D68B8172337F3F0224E3B98F7 /* FIRInteropEventNames.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInteropEventNames.h; path = Interop/Analytics/Public/FIRInteropEventNames.h; sourceTree = ""; }; + 3B40445679FCB9DC4084E9B3A02F6009 /* Popover-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Popover-dummy.m"; sourceTree = ""; }; + 3B5503A38874184741D499982BB791E6 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + 3B5BF288BA68B9314D3EEBF73A0BABD9 /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = FirebaseCore/Sources/Private/FIRComponentContainer.h; sourceTree = ""; }; + 3B69F91378204333C582896D23931F8A /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 3C7969C252057FC66B318FBA53E2820E /* FIRCLSNetworkOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSNetworkOperation.m; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSNetworkOperation.m; sourceTree = ""; }; + 3C838576264BE57CFC548015E8C842CA /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + 3C980490541BBD694A601982434D82E9 /* FIRInstallationsIIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIIDTokenStore.m; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m; sourceTree = ""; }; + 3CB53503593458B04A17C632B37F0018 /* FIRInstanceIDBackupExcludedPlist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDBackupExcludedPlist.m; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m; sourceTree = ""; }; + 3E06DD1209AFEDF580B6C3EE530BA37D /* GTMMIMEDocument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMIMEDocument.h; path = Source/GTMMIMEDocument.h; sourceTree = ""; }; 3E11D17DEC8D12C77BA9C7FE226A265D /* Pods-FoodScanUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoodScanUITests.release.xcconfig"; sourceTree = ""; }; - 3E4A62825AA0DCEF2D86BBAD53AB3679 /* FIRCLSFCRAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFCRAnalytics.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.h; sourceTree = ""; }; - 3E5E7C766835A6036388966ABA21D350 /* FIRCLSUserLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUserLogging.m; path = Crashlytics/Crashlytics/Components/FIRCLSUserLogging.m; sourceTree = ""; }; - 3E8DBDEE150292127AF8808AF2E040EE /* GPBDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBDictionary.m; path = objectivec/GPBDictionary.m; sourceTree = ""; }; - 3EBD3A1A7B5988E26A3170AA87A6C66B /* FBLPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromise.h; path = Sources/FBLPromises/include/FBLPromise.h; sourceTree = ""; }; - 3F1C234DE2579A014835C4A80CBE7072 /* GTLRRuntimeCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRRuntimeCommon.m; path = Source/Objects/GTLRRuntimeCommon.m; sourceTree = ""; }; - 3F23B3647BB86F9C6180FBF2E8BE9E0A /* FIRComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponent.m; path = FirebaseCore/Sources/FIRComponent.m; sourceTree = ""; }; - 3F32098B1A2022AC15528F4EAE12D966 /* IQKeyboardManagerSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.xcconfig; sourceTree = ""; }; - 3F69B235623ECD9E8FCAF5AA00C3E835 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; - 3FB13B546485E68E8BE06ADA86833840 /* GDTCORStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORStorage.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h; sourceTree = ""; }; - 3FBBD3AE477C1B0D664239B6D0E08E81 /* FIRCLSMachException.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSMachException.c; path = Crashlytics/Crashlytics/Handlers/FIRCLSMachException.c; sourceTree = ""; }; - 3FF3153A298ACA24172F2EB8D7A8E826 /* FirebaseCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCore-umbrella.h"; sourceTree = ""; }; - 400ABB1ACE6D802781D5E8D13DC991BE /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; - 40766AB63041EE60BE9F2EDBACFB2033 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = ""; }; - 4164DDEF584A183DC8DCBD639583FF71 /* GTLRUploadParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUploadParameters.m; path = Source/Objects/GTLRUploadParameters.m; sourceTree = ""; }; - 416E8C378BE14B0CC54435CB5415CE73 /* Protobuf.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Protobuf.xcconfig; sourceTree = ""; }; - 4170B9A0E6D64C8E5F469BF40090172D /* FBLPromiseError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromiseError.h; path = Sources/FBLPromises/include/FBLPromiseError.h; sourceTree = ""; }; - 421C108D404BFE37DF7BE0E355EC7268 /* GoogleToolboxForMac-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-prefix.pch"; sourceTree = ""; }; - 427CEA2CCD49F57ED3522AFE5BEC21F0 /* FIRCLSUUID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUUID.h; path = Crashlytics/Shared/FIRCLSUUID.h; sourceTree = ""; }; - 42D7D77667604A229A7508293C89067B /* GPBCodedInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBCodedInputStream.m; path = objectivec/GPBCodedInputStream.m; sourceTree = ""; }; - 431FC9734185D8A1AE8954BEE79FD220 /* Any.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Any.pbobjc.h; path = objectivec/google/protobuf/Any.pbobjc.h; sourceTree = ""; }; - 434404EE6D8E9FCE1C0E9DB0530A7129 /* FIRCLSDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDefines.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSDefines.h; sourceTree = ""; }; - 43590C47EC6ACEBF58FF3B1C9583B16F /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - 436F208E80310B173AE4CCD8593AF1BA /* NotificationBannerUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationBannerUtilities.swift; path = NotificationBanner/Classes/NotificationBannerUtilities.swift; sourceTree = ""; }; - 438FC9F5ED768BF7FBFA02AF8645C2AA /* FIRCLSURLSessionTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionTask.h; sourceTree = ""; }; - 439B76C1B3F44D348FD9F13349BD3182 /* FIRCLSSymbolResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSymbolResolver.m; path = Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.m; sourceTree = ""; }; - 43D7D5036ECF9E8FEAFE4619ABC286ED /* GoogleToolboxForMac-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-umbrella.h"; sourceTree = ""; }; - 43DAD21B36E9C2EEBC4F8B4F212B2D7F /* FIRInstanceIDTokenDeleteOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenDeleteOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h; sourceTree = ""; }; - 4441691AA83FC8F8736FA82AD0844B46 /* FIRInstallationsIIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIIDStore.m; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m; sourceTree = ""; }; - 445E4524C9DC66D2D8FE50C212E669E1 /* FIRCLSUnwind_x86.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSUnwind_x86.c; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_x86.c; sourceTree = ""; }; - 4486640994B008578642E91ACE50AA2D /* GDTCORUploadCoordinator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORUploadCoordinator.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m; sourceTree = ""; }; - 44DBA675699A3BE5A0A3D3DF4EDAC2AA /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = ""; }; - 44E0DC87C16CC2B49E30627BB4DEE356 /* FIRCLSProcess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSProcess.h; path = Crashlytics/Crashlytics/Components/FIRCLSProcess.h; sourceTree = ""; }; - 451228DEC8192B14C30C754943441C22 /* MarqueeLabel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MarqueeLabel-umbrella.h"; sourceTree = ""; }; - 45648D83824956DF96B27378EB72C447 /* GPBExtensionInternals.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBExtensionInternals.m; path = objectivec/GPBExtensionInternals.m; sourceTree = ""; }; - 4568A166657BBE5FE273258DB62601B5 /* FIRCLSUnwind_arm.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSUnwind_arm.c; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arm.c; sourceTree = ""; }; - 45E580ADF5E02AAA30BB60908DDEAF51 /* FIRHeartbeatInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRHeartbeatInfo.m; path = FirebaseCore/Sources/FIRHeartbeatInfo.m; sourceTree = ""; }; - 462BE57535C2E8A8CDD7823F17692773 /* GTLRService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRService.m; path = Source/Objects/GTLRService.m; sourceTree = ""; }; - 46CD6DFB17C05EE4400922A86FF50288 /* FIRCLSReport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSReport.m; path = Crashlytics/Crashlytics/Models/FIRCLSReport.m; sourceTree = ""; }; - 46EFD1A3E1027B6D956C0D8FFA4966AD /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = ""; }; - 475779BFB5687083CF00267E4DDE1767 /* FIRCLSThreadState.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSThreadState.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSThreadState.c; sourceTree = ""; }; - 4866A77D46D9CC820D7E94505385EB26 /* FIRCoreDiagnosticsInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsInterop.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h; sourceTree = ""; }; - 487CFE32B477A3010456AA421F166450 /* FIRCLSPackageReportOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSPackageReportOperation.m; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.m; sourceTree = ""; }; - 48ADC679761B72BF33567D82B33E6C02 /* FIRCLSGlobals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSGlobals.h; path = Crashlytics/Crashlytics/Components/FIRCLSGlobals.h; sourceTree = ""; }; - 48BA43872EF764E48AA6ECE2231C8992 /* GPBCodedInputStream_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedInputStream_PackagePrivate.h; path = objectivec/GPBCodedInputStream_PackagePrivate.h; sourceTree = ""; }; - 48BF607438180804396BA02BD2401345 /* CosmosTouchTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosTouchTarget.swift; path = Cosmos/Helpers/CosmosTouchTarget.swift; sourceTree = ""; }; - 490C465F2430F06F699BF12E18A223D0 /* FIRCLSMachOSlice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachOSlice.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOSlice.h; sourceTree = ""; }; - 4954CF7BBF11C5BD61AE27EC956A2F89 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = ""; }; - 49BB00934662594786C89A059A3F1481 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = ""; }; - 4A49A82159AE994FA117DD2A224D363B /* GULAppEnvironmentUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppEnvironmentUtil.h; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.h; sourceTree = ""; }; - 4A5CB1E8250DFED48AB6605D60B24C67 /* GTLRErrorObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRErrorObject.m; path = Source/Objects/GTLRErrorObject.m; sourceTree = ""; }; - 4ADA3A28C6ACD641C285EC52500B5BCF /* Timestamp.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Timestamp.pbobjc.m; path = objectivec/google/protobuf/Timestamp.pbobjc.m; sourceTree = ""; }; - 4B367AAADFD1377E71C78557E018B527 /* FIRInstallationsAuthTokenResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsAuthTokenResult.m; path = FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m; sourceTree = ""; }; - 4B36E59DE0AFCF6A36C015A4E662F2B7 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; + 3E139283E7181753A9ACB0A04829085D /* pb_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_common.h; sourceTree = ""; }; + 3E5C6A20E82F32854C91A9CBABF873D3 /* FIRCLSFABAsyncOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFABAsyncOperation.m; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation.m; sourceTree = ""; }; + 3E9911338755448EA3B176EB0257E204 /* FIRCLSProcess.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSProcess.h; path = Crashlytics/Crashlytics/Components/FIRCLSProcess.h; sourceTree = ""; }; + 3EAA480CF461DC57ABAAAC0E2447C527 /* FirebaseInstanceID-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseInstanceID-umbrella.h"; sourceTree = ""; }; + 3EF05A836BCA31AB6C4BCA4EC0CF55CF /* MarqueeLabel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MarqueeLabel.modulemap; sourceTree = ""; }; + 3F2F46394EEAECF92F8610FE459955E2 /* FBLPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBLPromise.m; path = Sources/FBLPromises/FBLPromise.m; sourceTree = ""; }; + 3F60309EB0A016406F1C5EEC2EB30BCD /* FIRCLSUserLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUserLogging.m; path = Crashlytics/Crashlytics/Components/FIRCLSUserLogging.m; sourceTree = ""; }; + 3FD438F64569883B1D9782170BB796C1 /* GDTCORDataFuture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORDataFuture.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m; sourceTree = ""; }; + 402BBBC82138285D1D44910E61312602 /* FIRCLSReportUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSReportUploader.m; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.m; sourceTree = ""; }; + 4034D36FB86CCC529959CE4D3396FF85 /* FIRCLSDataCollectionArbiter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDataCollectionArbiter.h; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.h; sourceTree = ""; }; + 40AA22A8260E599CB7D3135966CB9985 /* FIRCLSPackageReportOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSPackageReportOperation.h; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.h; sourceTree = ""; }; + 40CDB95F6435D9563A215A70C47FA5F8 /* FIRCLSProcess.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSProcess.c; path = Crashlytics/Crashlytics/Components/FIRCLSProcess.c; sourceTree = ""; }; + 40F8CCF71FE09CBACD986376A00E72D2 /* FIRCLSDataCollectionToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSDataCollectionToken.m; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionToken.m; sourceTree = ""; }; + 41F384B456FBEA8577A41BC89D7FE31D /* FIRCLSThreadState.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSThreadState.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSThreadState.c; sourceTree = ""; }; + 421E8CD0D056D0FA62150B7DA2AE9363 /* cct.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cct.nanopb.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h; sourceTree = ""; }; + 426F52056B0B731806A0D5E1D71DDDE8 /* GPBAny.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBAny.pbobjc.h; path = objectivec/GPBAny.pbobjc.h; sourceTree = ""; }; + 427BDB8835C2307A7E6443B23DE597FD /* FIRCLSUnwind_x86.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUnwind_x86.h; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_x86.h; sourceTree = ""; }; + 42902DB959CF1401AF41037680A1A48D /* FIRCLSUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUserDefaults.h; path = Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.h; sourceTree = ""; }; + 42AB508652D6ECA0CB998B9A99AC5844 /* PromisesObjC-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromisesObjC-Info.plist"; sourceTree = ""; }; + 42E0153825E02E8F6CB1EFA2749FB887 /* FIRCLSReportAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportAdapter.h; path = Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.h; sourceTree = ""; }; + 42EF23EDB16F9ADFD52166DD280B7642 /* GTMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; + 430B0005A77A8131FDBFCC5F7AD421A8 /* GULUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULUserDefaults.h; path = GoogleUtilities/UserDefaults/Private/GULUserDefaults.h; sourceTree = ""; }; + 43229DACBFD4F93A4D69544035F4105D /* FBLPromise+Any.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Any.h"; path = "Sources/FBLPromises/include/FBLPromise+Any.h"; sourceTree = ""; }; + 439B296ECDD7432AE7F81F84F5D319AA /* FirebaseInstanceID.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstanceID.xcconfig; sourceTree = ""; }; + 43FE428A754FAEA4E158F716D66750DE /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = ""; }; + 4401FAB2F5CDA7A76F9D3DFCE253EEB1 /* FIRCLSSerializeSymbolicatedFramesOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSerializeSymbolicatedFramesOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.h; sourceTree = ""; }; + 444FB82D62A7EFBFC2D15017F2FF2A61 /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; + 449799DC12BAD1B71D211BB154255248 /* CosmosText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosText.swift; path = Cosmos/CosmosText.swift; sourceTree = ""; }; + 4538A4E1EFDE82B3DBB74656B938DD93 /* GTMLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMLogger.h; path = Foundation/GTMLogger.h; sourceTree = ""; }; + 453977719F0A826E13493F5AD7C11805 /* FIRInstanceIDTokenFetchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenFetchOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m; sourceTree = ""; }; + 4549BF8BAB516C4D742E2E07904A4A60 /* GTMSessionFetcher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.xcconfig; sourceTree = ""; }; + 459A8171A5A32FF1BAC7F75F362C3C7A /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = FirebaseCore/Sources/Private/FIRDependency.h; sourceTree = ""; }; + 45B4659964722AE29215F34C2598A065 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift"; sourceTree = ""; }; + 45C22B4D65CC94009F43381DF758DB7C /* FIRCrashlytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCrashlytics.m; path = Crashlytics/Crashlytics/FIRCrashlytics.m; sourceTree = ""; }; + 4618A2F8640A65CE51E183364006936F /* BaseNotificationBanner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseNotificationBanner.swift; path = NotificationBanner/Classes/BaseNotificationBanner.swift; sourceTree = ""; }; + 462744F3538BFDADF52424FD0A68830B /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = ""; }; + 46576E3F63E4162629160135C4364BA6 /* GULAppDelegateSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h; sourceTree = ""; }; + 468A81285B1D6D97360FB27FB9A87396 /* GULNetworkConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkConstants.h; path = GoogleUtilities/Network/Private/GULNetworkConstants.h; sourceTree = ""; }; + 46D592B7DE97CEC75DB56AD18A709AE2 /* FIRInstanceIDConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDConstants.m; path = Firebase/InstanceID/FIRInstanceIDConstants.m; sourceTree = ""; }; + 474C46AF4410AFC5064926E90E1A48A2 /* FIRCoreDiagnosticsConnector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsConnector.h; path = FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h; sourceTree = ""; }; + 478E0CC6F061331C1F4728013EB08612 /* GULApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULApplication.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h; sourceTree = ""; }; + 47E77938D8A21306376519D3E96AD36C /* FIRInstanceIDKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeychain.h; path = Firebase/InstanceID/FIRInstanceIDKeychain.h; sourceTree = ""; }; + 4866B6084839E09191BAC6E96C8ECE28 /* FIRCLSGlobals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSGlobals.h; path = Crashlytics/Crashlytics/Components/FIRCLSGlobals.h; sourceTree = ""; }; + 4868BF4C27B6481C8D90033528A5036A /* GDTCORAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORAssert.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h; sourceTree = ""; }; + 48DF30206279FB72BE451C4FB90B1A6C /* FIRComponentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentContainer.m; path = FirebaseCore/Sources/FIRComponentContainer.m; sourceTree = ""; }; + 490F72E72EA878E6DB6941068AB2B34F /* GPBApi.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBApi.pbobjc.m; path = objectivec/GPBApi.pbobjc.m; sourceTree = ""; }; + 4913B9003CC22147836EBC82EC7E98A3 /* FIRCLSUnwind_x86.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSUnwind_x86.c; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_x86.c; sourceTree = ""; }; + 4937363A943B257FBB42CAB737C03234 /* GTLRVisionObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRVisionObjects.m; path = Source/GeneratedServices/Vision/GTLRVisionObjects.m; sourceTree = ""; }; + 494033EBF19E5FDACED10052E4AAD58D /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = ""; }; + 49D23190F62F83B77B85BC33B001580A /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/SDAnimatedImageRep.h; sourceTree = ""; }; + 49D9DA598C6237019E3D9F51D1D43F93 /* FIRCLSOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSOperation.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSOperation.h; sourceTree = ""; }; + 49FD7BE32233BC859577783DA76B75F0 /* GTLRVision.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVision.h; path = Source/GeneratedServices/Vision/GTLRVision.h; sourceTree = ""; }; + 4A1706557C0ACB34059F0E56A60181F7 /* Popover-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Popover-umbrella.h"; sourceTree = ""; }; + 4AD2CEDB0543C947682706ABB1061C8B /* FIRInstanceIDAuthService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthService.m; path = Firebase/InstanceID/FIRInstanceIDAuthService.m; sourceTree = ""; }; + 4B031085E5C84236632A7007133A456D /* FIRApp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRApp.m; path = FirebaseCore/Sources/FIRApp.m; sourceTree = ""; }; + 4B093F0B2504894585ACA8E9F55C5A52 /* FIRCLSNetworkResponseHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSNetworkResponseHandler.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSNetworkResponseHandler.m; sourceTree = ""; }; 4B5263FA34DB6008B131081EF491E168 /* Pods-FoodScanUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoodScanUITests.debug.xcconfig"; sourceTree = ""; }; - 4B7B6106302B839251AB6A30F813B3DF /* FIRCLSReportManager_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportManager_Private.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportManager_Private.h; sourceTree = ""; }; - 4C53AF6395EC4F9BF0B06EA0A5BA3E53 /* GTLRDuration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDuration.m; path = Source/Objects/GTLRDuration.m; sourceTree = ""; }; - 4CA6119847F253761E8302FDC8978E02 /* FIRCLSURLSessionDownloadTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDownloadTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDownloadTask.h; sourceTree = ""; }; - 4CC9535E0DDDA7F09B836C700D523820 /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; - 4CCC63C53E659B7CD758BC7736EC3AC8 /* FIRCLSInstallIdentifierModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSInstallIdentifierModel.m; path = Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.m; sourceTree = ""; }; - 4CDCC58CE809341C6D4493EA20D1B46F /* FIRInstanceIDTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenManager.h; path = Firebase/InstanceID/FIRInstanceIDTokenManager.h; sourceTree = ""; }; - 4D1D2BC98D57B6EB6D9C53A5531ADD10 /* GDTCORPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORPlatform.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h; sourceTree = ""; }; - 4D646327442F61417544021A8A7B75D9 /* SDWebImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoder.h; path = SDWebImage/SDWebImageCoder.h; sourceTree = ""; }; - 4DB4EF7834D7EFD81FD6355407955D0E /* FIRCLSNetworkOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSNetworkOperation.m; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSNetworkOperation.m; sourceTree = ""; }; - 4DBC7EC2E446B2213C7A6FAA6AB6B89B /* FIRCLSCompactUnwind.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCompactUnwind.h; path = Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.h; sourceTree = ""; }; - 4DE20D841C531F358243B6B62FCE1B41 /* FIRInstanceIDVersionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDVersionUtilities.h; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.h; sourceTree = ""; }; + 4C23709D9E5230AE0740B11E2F77FDF4 /* FIRCLSFCRAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFCRAnalytics.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSFCRAnalytics.m; sourceTree = ""; }; + 4C4FD4D6E0E23954AD93734D7C6F55F6 /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON.swift; sourceTree = ""; }; + 4C91A263F3D99FA14AB1BAB66206D2AF /* FBLPromise+Wrap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Wrap.h"; path = "Sources/FBLPromises/include/FBLPromise+Wrap.h"; sourceTree = ""; }; + 4CE6FDABE8FDA433D3FB4B48BDF4E818 /* PromisesObjC-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromisesObjC-umbrella.h"; sourceTree = ""; }; + 4CEF77DCC3FFC432F8ABFDD171F7EDF3 /* ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist"; sourceTree = ""; }; + 4D30AC7A1FB44A63106178B50916B231 /* FBLPromise+Testing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Testing.m"; path = "Sources/FBLPromises/FBLPromise+Testing.m"; sourceTree = ""; }; + 4D5372F1F4BEA951D0F7D6ACFA9BE340 /* GDTCORUploadPackage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORUploadPackage.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m; sourceTree = ""; }; 4DFBF9CE0440C3CACD8A52D4213CF90B /* GoogleMVTextDetectorResources.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = GoogleMVTextDetectorResources.bundle; path = "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4E7576EC22F550FA7F16B609C6A4D40C /* FieldMask.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FieldMask.pbobjc.h; path = objectivec/google/protobuf/FieldMask.pbobjc.h; sourceTree = ""; }; - 4ED9E03F79A89856F65FB0A48CB5CA70 /* FBLPromise+Always.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Always.h"; path = "Sources/FBLPromises/include/FBLPromise+Always.h"; sourceTree = ""; }; - 4F6A1CCF7CD6C5D2F7BD47341FDC7870 /* GDTCORStorage_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORStorage_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h; sourceTree = ""; }; - 4F9D59C37CCC0BA64ACC04B13DCD941A /* FirebaseMLCommon.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseMLCommon.xcconfig; sourceTree = ""; }; - 4FB21129D44CBF1D93AD501384099E83 /* GULSecureCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSecureCoding.m; path = GoogleUtilities/Environment/GULSecureCoding.m; sourceTree = ""; }; - 4FD3A6E4EC0144E06EA6278F70BCC7C5 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; - 50FB6DDDA51F598D677773AF968B4364 /* FIRAEvent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRAEvent+Internal.h"; path = "Crashlytics/Crashlytics/Helpers/FIRAEvent+Internal.h"; sourceTree = ""; }; - 510C9D583B30469E2A6C9B3C354AE31E /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; - 5121B18C4C47856AA0A7C5E2A74811FB /* GDTCORReachability_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORReachability_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h; sourceTree = ""; }; - 51B0B12FC5FC8C70AD4FC4B57E819D15 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift"; sourceTree = ""; }; - 52425DA4C7D980D680BF66A5B90EC430 /* GTLRBatchResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchResult.h; path = Source/Objects/GTLRBatchResult.h; sourceTree = ""; }; - 52865C041E8B5EA333FC6DA146E61DAF /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; - 52F8DAB659A9CF1694D3FD754978A49E /* GoogleAPIClientForREST-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-prefix.pch"; sourceTree = ""; }; - 531492CCB14B7590BCDF5EAE4E14C6C3 /* GDTCORPlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORPlatform.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m; sourceTree = ""; }; - 531F005DA711676D4F8C17E30FFC44DD /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/SDAnimatedImageRep.m; sourceTree = ""; }; - 535A5DB4914ECE054815924C587F62FF /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = ""; }; - 53D5232F925CBEDF6B1F4BCDB7BD3DF9 /* FIRCoreDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsData.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h; sourceTree = ""; }; - 53DDE4B27ED9B380105726BA2E553279 /* FIRApp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRApp.h; path = FirebaseCore/Sources/Public/FIRApp.h; sourceTree = ""; }; - 53F2EB0C9C67DC1A4E3BEDD6728ADD84 /* CosmosLayers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosLayers.swift; path = Cosmos/CosmosLayers.swift; sourceTree = ""; }; - 5427948B7BFDD3EB15A59316F79F2D91 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/SDAnimatedImageRep.h; sourceTree = ""; }; - 54B2560659D5312DCDEA36E0E58288D9 /* CosmosLocalizedRating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosLocalizedRating.swift; path = Cosmos/CosmosLocalizedRating.swift; sourceTree = ""; }; - 55CC760E9480358E350431EC9CF882CE /* GoogleDataTransportCCTSupport-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleDataTransportCCTSupport-Info.plist"; sourceTree = ""; }; - 55D42430D30B26A953FCFCCAB4B3EF4B /* BaseNotificationBanner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseNotificationBanner.swift; path = NotificationBanner/Classes/BaseNotificationBanner.swift; sourceTree = ""; }; - 55D586A4A3D42F745F23E57428DF4299 /* GTMSessionFetcher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GTMSessionFetcher-Info.plist"; sourceTree = ""; }; - 561F02CBFAA1D41A8EC5562B19416A48 /* SwiftyJSON-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftyJSON-Info.plist"; sourceTree = ""; }; - 56A4314D9243DC8ABEBC25790C468BA8 /* SDWebImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageGIFCoder.m; path = SDWebImage/SDWebImageGIFCoder.m; sourceTree = ""; }; - 56E5D93159E6FE842A18B061E25607F6 /* Cosmos-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Cosmos-dummy.m"; sourceTree = ""; }; - 573E43AE4613B19B918E0F1953000143 /* FirebaseCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCore.h; path = FirebaseCore/Sources/Public/FirebaseCore.h; sourceTree = ""; }; - 575C7DA4A08830693DD49C448AB0498E /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - 576A3321DB0BA7D37857A03D773EDB1F /* FIRCLSFABAsyncOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABAsyncOperation_Private.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation_Private.h; sourceTree = ""; }; - 57B23A000E5CFE2200770C1F58803E27 /* FIRInstallationsStoredItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStoredItem.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h; sourceTree = ""; }; - 57BFAC23C9D9FDA42BF24BE37B9D46C6 /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; - 5808F01CC644C8822ED92A6501E50346 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSDictionary+URLArguments.m"; path = "Foundation/GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; - 586DC7B43E1DA9B833AA67C04D9DB213 /* GPBRootObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBRootObject.h; path = objectivec/GPBRootObject.h; sourceTree = ""; }; - 588B89F3870A52C8FB4C2501B86E38FD /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; - 58BA618464495B746B277CA8C44BFBBE /* FIRInstanceIDTokenDeleteOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenDeleteOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m; sourceTree = ""; }; - 58E9EAA76C25EA3A08A27525FC5530EE /* FIRInstallationsIIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIIDStore.h; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h; sourceTree = ""; }; - 5914452F33D455958E4EA029771440EA /* GDTCORRegistrar_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORRegistrar_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h; sourceTree = ""; }; - 597C31CDDB44D8A21D91DB1DEB3F37C2 /* FIRCLSDemangleOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDemangleOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.h; sourceTree = ""; }; - 59CFB9BF52D6D2B8C840FC1EEC7BD0FE /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F1AF55FFEE3A1788A1BCE03AF1733F6 /* FIROptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROptions.m; path = FirebaseCore/Sources/FIROptions.m; sourceTree = ""; }; + 4F46FB9EE0365C4B202C308F73C27F5C /* FIRCLSUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUtility.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSUtility.h; sourceTree = ""; }; + 4F8468D85B50B911C7C8220C206BEB73 /* SDWebImageImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageImageIOCoder.m; path = SDWebImage/SDWebImageImageIOCoder.m; sourceTree = ""; }; + 4F9C9A9B606E5304AD7F315899F119AF /* FIRCLSUnwind.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSUnwind.c; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.c; sourceTree = ""; }; + 5025A6C7D9DFAE3E534E9229F49480A2 /* region_proposal_text_detector_tflite_gray_quantized.bincfg */ = {isa = PBXFileReference; includeInIndex = 1; name = region_proposal_text_detector_tflite_gray_quantized.bincfg; path = Resources/GoogleMVTextDetectorResources/region_proposal_text_detector_tflite_gray_quantized.bincfg; sourceTree = ""; }; + 506AA04DA7BEFEDC7BD8E42B7E622C1B /* GPBArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBArray.h; path = objectivec/GPBArray.h; sourceTree = ""; }; + 506C307DB96C77F25F38513B80BBE1E4 /* FBLPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromise.h; path = Sources/FBLPromises/include/FBLPromise.h; sourceTree = ""; }; + 50D713212B5BED635C60AB0F21889877 /* FIRAnalyticsInteropListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsInteropListener.h; path = Interop/Analytics/Public/FIRAnalyticsInteropListener.h; sourceTree = ""; }; + 5148106E51E14CDF6F45C39224BC5E97 /* FIRCLSDwarfExpressionMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDwarfExpressionMachine.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfExpressionMachine.h; sourceTree = ""; }; + 51EC6ACC97E7399DB23C696642311F5A /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; + 520BBFA92E20D1F43B049DE5A0DA13B2 /* GULLoggerCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerCodes.h; path = GoogleUtilities/Common/GULLoggerCodes.h; sourceTree = ""; }; + 5227C185BE46B518E07AEA0C5FECC882 /* GTLRObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRObject.m; path = Source/Objects/GTLRObject.m; sourceTree = ""; }; + 52CC819F854449E596D7C0218A7D7D07 /* FIRCLSFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFileManager.m; path = Crashlytics/Crashlytics/Models/FIRCLSFileManager.m; sourceTree = ""; }; + 534FACE0151E3D0C4F27850D9FDA809E /* GPBFieldMask.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBFieldMask.pbobjc.m; path = objectivec/GPBFieldMask.pbobjc.m; sourceTree = ""; }; + 53C042F7B96B2DF7B0C6E8480AD23501 /* FIRCLSExecutionIdentifierModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSExecutionIdentifierModel.m; path = Crashlytics/Crashlytics/Models/FIRCLSExecutionIdentifierModel.m; sourceTree = ""; }; + 5479E8B6F66D7587404812B975B944EC /* FIRExceptionModel_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRExceptionModel_Private.h; path = Crashlytics/Crashlytics/Private/FIRExceptionModel_Private.h; sourceTree = ""; }; + 548FA4DCF5A4AED70F8105AD0E573CC1 /* GDTCOREvent+GDTCCTSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GDTCOREvent+GDTCCTSupport.h"; path = "GoogleDataTransportCCTSupport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h"; sourceTree = ""; }; + 54930AF3B8763427DBF26A17AE1A8B37 /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = FirebaseCore/Sources/Private/FIRAppInternal.h; sourceTree = ""; }; + 54DBEF85F95CAF274E566C5EF8E7D2FE /* FIRInstallationsIIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIIDTokenStore.h; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h; sourceTree = ""; }; + 54FAB3ED9ACD7F090368B94F6DCB7C7F /* GoogleAPIClientForREST.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleAPIClientForREST.modulemap; sourceTree = ""; }; + 552B7FB1A0E6BC43BF15DF2694D9243B /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; + 554B5690E9B1405038212A4EEF541D12 /* FIRCLSRecordIdentity.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSRecordIdentity.m; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.m; sourceTree = ""; }; + 55539A4B57C4995E81FD746A2D1DC10A /* FIRDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDiagnosticsData.h; path = FirebaseCore/Sources/FIRDiagnosticsData.h; sourceTree = ""; }; + 55F1263D57D1E5E2E1C6595C7C6F0461 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + 5613B88756D0E546B20AAAD9CC2F6DD1 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/SDImageCacheConfig.h; sourceTree = ""; }; + 5688D84FDA31D39123C186C9498247AA /* BannerColors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerColors.swift; path = NotificationBanner/Classes/BannerColors.swift; sourceTree = ""; }; + 56A7493E74CAD3A000CD2961DF90F4A1 /* GPBFieldMask.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBFieldMask.pbobjc.h; path = objectivec/GPBFieldMask.pbobjc.h; sourceTree = ""; }; + 56C4F8E5F63541B72A18CB5DEC232976 /* FIRInstanceIDVersionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDVersionUtilities.m; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.m; sourceTree = ""; }; + 56EB5DC9E4F7072DE6880186FFEF33DA /* UILoadControl_UIScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UILoadControl_UIScrollView.swift; path = Pod/Classes/UILoadControl_UIScrollView.swift; sourceTree = ""; }; + 57267D8A8FDE5F890F2DB78DCFF3FEF1 /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; + 57F2DE8B50EBB150065C90CDDDBF2D0B /* SDWebImageImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageImageIOCoder.h; path = SDWebImage/SDWebImageImageIOCoder.h; sourceTree = ""; }; + 58274F331D9C31E12572CBFC758DE15D /* GoogleToolboxForMac-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-umbrella.h"; sourceTree = ""; }; + 583AFC6ABE4B81426C75F5352BFA117E /* FIRLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRLogger.m; path = FirebaseCore/Sources/FIRLogger.m; sourceTree = ""; }; + 583D18506697DD3C104E445C846C060B /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; + 590DFE5AF4CE25711548E5DB6B16D0BC /* FIRCLSException.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSException.mm; path = Crashlytics/Crashlytics/Handlers/FIRCLSException.mm; sourceTree = ""; }; + 595A00EBEEAEE7EBE765D7677320BC81 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; + 59960483DE4BD69A47EA24EDA93B2600 /* GDTCOREvent_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREvent_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h; sourceTree = ""; }; 59D13627F3AF9E16C579EDF1E93C66DE /* Pods-FoodScanUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FoodScanUITests-dummy.m"; sourceTree = ""; }; - 59F28B53A8B3410F953153B8BF1BFB40 /* FBLPromise+Reduce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Reduce.m"; path = "Sources/FBLPromises/FBLPromise+Reduce.m"; sourceTree = ""; }; - 5A75EC13CF00DBD266B1CAD2E97BF5E7 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; - 5AC6A87CB8446EF2B81C0B0E8FB37EEE /* FIRInstallationsItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsItem.m; path = FirebaseInstallations/Source/Library/FIRInstallationsItem.m; sourceTree = ""; }; - 5AC6F1F922CF60E74E8720A2ADC70184 /* GTLRVisionQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVisionQuery.h; path = Source/GeneratedServices/Vision/GTLRVisionQuery.h; sourceTree = ""; }; + 59D220520457C63E7FC5311B5DCE2639 /* FIRAEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAEvent.h; path = Crashlytics/Crashlytics/Helpers/FIRAEvent.h; sourceTree = ""; }; + 5A15759568DD9077D5819E87E23463B1 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; + 5A9E4CE72CE695EE466D31010F4C1319 /* GPBCodedInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBCodedInputStream.m; path = objectivec/GPBCodedInputStream.m; sourceTree = ""; }; + 5AE2B063B0D75A94E6DD691CC4CADE1F /* GPBWrappers.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBWrappers.pbobjc.m; path = objectivec/GPBWrappers.pbobjc.m; sourceTree = ""; }; 5AE808EB03CCE02FC5B0C9A32D59E34A /* Pods-FoodScanTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FoodScanTests-umbrella.h"; sourceTree = ""; }; - 5B153406034F5B3A7AD41BC5D2CFE0E2 /* FIRCLSReportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportManager.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.h; sourceTree = ""; }; - 5B2AA935B07EC799232D6DB26E584850 /* FBLPromise+Recover.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Recover.h"; path = "Sources/FBLPromises/include/FBLPromise+Recover.h"; sourceTree = ""; }; - 5B7450C1B0D17672317D1D6626953166 /* GoogleAPIClientForREST.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleAPIClientForREST.modulemap; sourceTree = ""; }; - 5C7ADEA21D74B0C0D64779EDAB44F791 /* FBLPromiseError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBLPromiseError.m; path = Sources/FBLPromises/FBLPromiseError.m; sourceTree = ""; }; - 5CA3CA2E176301FDF59F7CFE1C700C62 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; - 5CA4BBFEABBCEFB601499A9A6777F28C /* FIRAnalyticsConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAnalyticsConfiguration.m; path = FirebaseCore/Sources/FIRAnalyticsConfiguration.m; sourceTree = ""; }; - 5D1D8F44E421E96CF0BC6CE63C3EAEB5 /* FIRVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVersion.h; path = FirebaseCore/Sources/FIRVersion.h; sourceTree = ""; }; - 5D5442B2959E743E3BF73F0E8FE053C3 /* FIRInstanceIDCheckinService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinService.m; path = Firebase/InstanceID/FIRInstanceIDCheckinService.m; sourceTree = ""; }; - 5D780E4885DF61F8ACE5E993E326A76B /* FIRInstallations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallations.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallations.h; sourceTree = ""; }; + 5AFB9BC083A109B15A557D990B132E7E /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = FirebaseCore/Sources/Private/FIRComponent.h; sourceTree = ""; }; + 5B13E96214788D7026649E291319901F /* FBLPromise+Then.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Then.h"; path = "Sources/FBLPromises/include/FBLPromise+Then.h"; sourceTree = ""; }; + 5B38628D423864B7C8751CDFF74B6964 /* FIRCLSDataParsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDataParsing.c; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.c; sourceTree = ""; }; + 5B49FCB0ADBBF18511895922E5612A57 /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = FirebaseCore/Sources/Private/FIRComponent.h; sourceTree = ""; }; + 5BAA40DF9933556D33FA504ED4600304 /* FIRCLSSettingsOnboardingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSettingsOnboardingManager.m; path = Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.m; sourceTree = ""; }; + 5BC17FF10FD8AE0BFCAC15B17FBE1457 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + 5C0AF59ADF9BD9BCF1BAA4DBFF6AA221 /* FIRCLSSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSettings.m; path = Crashlytics/Crashlytics/Models/FIRCLSSettings.m; sourceTree = ""; }; + 5CB67EAC5BE239BE3E3BF3F5A46C4E6D /* FIRCLSCodeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSCodeMapping.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSCodeMapping.m; sourceTree = ""; }; + 5D6DF93D700922A1ADC42A6A93543107 /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5D9D50DF6FA7538AC67A9D05A74250B6 /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; - 5DD77662A5A27AA468D014AE7E7C6E49 /* GTMLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMLogger.h; path = Foundation/GTMLogger.h; sourceTree = ""; }; - 5E260648839D5419E4C43B93CB461BF8 /* FIRCLSDwarfExpressionMachine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDwarfExpressionMachine.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfExpressionMachine.h; sourceTree = ""; }; - 5E344BC55557B53F2A0672426BBC96B5 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 5E3CA8F2835E754B24955AEFF1EBD029 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; - 5E62512A4DA50CC43D7A4D3C23406E65 /* FIRCLSOnboardingOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSOnboardingOperation.h; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.h; sourceTree = ""; }; - 5E8F2ABA75A185557C51ABBD0D497E87 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - 5F3FF679B21267949BD62DE76656C654 /* GDTCOREvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCOREvent.m; path = GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m; sourceTree = ""; }; - 5F5E56083411168460263A3799967A46 /* FIRInstanceIDAuthService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthService.m; path = Firebase/InstanceID/FIRInstanceIDAuthService.m; sourceTree = ""; }; - 600B6F83EF7B44500B98D24520380A70 /* FIRCLSUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUtility.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSUtility.m; sourceTree = ""; }; - 6022D46D8E7B0A19CA237A02C5368C84 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = ""; }; - 603388BFDE5C928F931FAD31C811857C /* FIRCLSNetworkClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSNetworkClient.m; path = Crashlytics/Crashlytics/Controllers/FIRCLSNetworkClient.m; sourceTree = ""; }; - 60E2D94C21549355CEFD27780CBB8680 /* BannerHapticGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerHapticGenerator.swift; path = NotificationBanner/Classes/BannerHapticGenerator.swift; sourceTree = ""; }; - 618C299967F1A6E8FCF71E5D837B7F33 /* GTMSessionFetcherLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherLogging.m; path = Source/GTMSessionFetcherLogging.m; sourceTree = ""; }; - 61B4F36D04915CE9BBF129530A6123C4 /* FIRCLSURLSessionDataTask_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDataTask_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDataTask_PrivateMethods.h; sourceTree = ""; }; - 61DD4CB09F528723FA2F77683B488A43 /* nanopb-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-umbrella.h"; sourceTree = ""; }; - 61F4485DECFEE4CBD814D2EE5E2435CF /* GoogleDataTransport-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleDataTransport-umbrella.h"; sourceTree = ""; }; - 623894999D2C7A036706ACD485E612AA /* FIRConfigurationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfigurationInternal.h; path = FirebaseCore/Sources/Private/FIRConfigurationInternal.h; sourceTree = ""; }; - 624FD51B55946984B8813437A8991010 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; - 626CDAD14468A2014DF369DB0FFAB161 /* FIRCLSHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSHandler.m; path = Crashlytics/Crashlytics/Handlers/FIRCLSHandler.m; sourceTree = ""; }; - 6295582113239D8EA93A32599EC97C92 /* GDTCORRegistrar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORRegistrar.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h; sourceTree = ""; }; - 62DB5775DB2CFBCA61284FA700A79486 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSString+URLArguments.h"; path = "Foundation/GTMNSString+URLArguments.h"; sourceTree = ""; }; - 63353F24AA1808665111DD6D42739C20 /* FBLPromise+Do.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Do.m"; path = "Sources/FBLPromises/FBLPromise+Do.m"; sourceTree = ""; }; - 63498F2E6B363436092DC859541AC3AB /* FIRInstallationsAuthTokenResultInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAuthTokenResultInternal.h; path = FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h; sourceTree = ""; }; - 635BE606BF44BFA02DC61E12425FEA96 /* FirebaseCoreDiagnosticsInterop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCoreDiagnosticsInterop.xcconfig; sourceTree = ""; }; - 63C5FA1A1609428DAFA8B42781EBC76B /* NotificationBanner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationBanner.swift; path = NotificationBanner/Classes/NotificationBanner.swift; sourceTree = ""; }; - 6412959C0EBCB040F4F6F101BBA6A24D /* FIRCLSException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSException.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSException.h; sourceTree = ""; }; - 6479B0D9C62EA63D4B9E1D6D433F96AF /* UILoadControl-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "UILoadControl-Info.plist"; sourceTree = ""; }; - 6479D558AD8DC116862189B6D60F8D52 /* FirebaseInstanceID-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseInstanceID-umbrella.h"; sourceTree = ""; }; - 64CF2473E7C1FBAA9B6BDB6645C706D0 /* FBLPromise+Do.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Do.h"; path = "Sources/FBLPromises/include/FBLPromise+Do.h"; sourceTree = ""; }; - 65346E0768C41576066538B80D96D959 /* GDTCORTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransformer.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h; sourceTree = ""; }; - 656CCD3D643167FD5EF9E7AD15E31F41 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/SDImageCacheConfig.m; sourceTree = ""; }; - 65921BF4B990681309B59796AFA89D8A /* FIRSecureStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSecureStorage.m; path = FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m; sourceTree = ""; }; - 661755914F4D779C73DE293B1B9C2B50 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; - 6678A53EB2732527F5B09AC47D40A2D9 /* FIRInstanceIDAuthKeyChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthKeyChain.h; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h; sourceTree = ""; }; - 6696CF2DA9EA4B19E6DD987E6A1AB1D4 /* FirebaseInstanceID-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstanceID-dummy.m"; sourceTree = ""; }; - 66BE54A64A2353B6F6BB988688E14AAD /* GDTCCTUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTUploader.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m; sourceTree = ""; }; - 66D90F6D20FF66048AA11A313212119A /* FBLPromisePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromisePrivate.h; path = Sources/FBLPromises/include/FBLPromisePrivate.h; sourceTree = ""; }; - 66E3690C7FD0398FD29EB6C991B5B1C0 /* nanopb-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nanopb-dummy.m"; sourceTree = ""; }; - 6733AA09988BCE4CB795C0D83FF88E9F /* pb_common.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_common.c; sourceTree = ""; }; - 67D0AB0491E971C3CDC647CEA4879910 /* GTMSessionFetcher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-umbrella.h"; sourceTree = ""; }; - 68483FD4261049AA5A9AE6924283D8F4 /* GoogleDataTransport.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleDataTransport.modulemap; sourceTree = ""; }; - 68FD584350B73339523DA1CCD877D829 /* tflite_lstm_recognizer_latin_0.3.bincfg */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.bincfg; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.bincfg; sourceTree = ""; }; + 5D7B070ADB703623F667CE7828F17626 /* GPBApi.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBApi.pbobjc.h; path = objectivec/GPBApi.pbobjc.h; sourceTree = ""; }; + 5DD978D3E2D5E3DE19E4856ADF51782C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + 5E43AAB91AE6EA1AF5A823D156A01F66 /* GULHeartbeatDateStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULHeartbeatDateStorage.h; path = GoogleUtilities/Environment/Public/GULHeartbeatDateStorage.h; sourceTree = ""; }; + 5E48C7D094D98245893E7F2378168AE2 /* FIRInstallationsLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsLogger.h; path = FirebaseInstallations/Source/Library/FIRInstallationsLogger.h; sourceTree = ""; }; + 5E65AF6DDB5E842F9E17608A00D308A4 /* SDWebImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCodersManager.h; path = SDWebImage/SDWebImageCodersManager.h; sourceTree = ""; }; + 5EB908590222A5ED62F253EE07352875 /* Cosmos-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Cosmos-Info.plist"; sourceTree = ""; }; + 5EC5B5AA15FF7A6502760E5C24C1A8D6 /* FIRInstanceIDLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDLogger.h; path = Firebase/InstanceID/FIRInstanceIDLogger.h; sourceTree = ""; }; + 5F2AD7C8315050FB5990D66C9318ACF7 /* SwiftyJSON-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftyJSON-Info.plist"; sourceTree = ""; }; + 5F48EAF5B1765FD5C67BF733A1C1CC20 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; + 5F6BA3A58CE78CA2615BAF39B3AB4F30 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; + 5F92C0BD929D3D857C2249F06AC51AA4 /* GDTCORReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORReachability.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m; sourceTree = ""; }; + 5FEB30EA412FEF9376DC8F0CD6097C03 /* GTMSessionUploadFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionUploadFetcher.h; path = Source/GTMSessionUploadFetcher.h; sourceTree = ""; }; + 5FFBF5D62B05098AF9222782F4EB7DD3 /* FIRAnalyticsConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAnalyticsConfiguration.m; path = FirebaseCore/Sources/FIRAnalyticsConfiguration.m; sourceTree = ""; }; + 603B3F1059B3E9ED3815D62DA41A69E5 /* FirebaseInstallations.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstallations.xcconfig; sourceTree = ""; }; + 60C1E5AC57C38CF63AAF96DCAECB0FBB /* FieldMask.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FieldMask.pbobjc.h; path = objectivec/google/protobuf/FieldMask.pbobjc.h; sourceTree = ""; }; + 60F9612A453444FCA55F84072677AA43 /* NotificationBannerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NotificationBannerSwift.modulemap; sourceTree = ""; }; + 6119744C12C94850162714DF33A7AA62 /* FirebaseCoreInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCoreInternal.h; path = FirebaseCore/Sources/Private/FirebaseCoreInternal.h; sourceTree = ""; }; + 613E7047E63294E42126DF366B0A062F /* FBLPromise+Delay.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Delay.m"; path = "Sources/FBLPromises/FBLPromise+Delay.m"; sourceTree = ""; }; + 61489CD970C15DE531CC665FEA739FD8 /* GTMGatherInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMGatherInputStream.m; path = Source/GTMGatherInputStream.m; sourceTree = ""; }; + 6153309B0EAB6C72A99D4C108FD108F4 /* FIRInstanceIDCombinedHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCombinedHandler.m; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.m; sourceTree = ""; }; + 622607CEEB27681907DAB43BEA6EBD9E /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = ""; }; + 6280C7ED15DAA3A5E0E3038D367CBCF6 /* FIRCLSFABHost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFABHost.m; path = Crashlytics/Shared/FIRCLSFABHost.m; sourceTree = ""; }; + 630F25B88555F922422BA2905EF3707C /* nanopb.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = nanopb.xcconfig; sourceTree = ""; }; + 6343586AEAB345ABBEFC1C0F02074DA6 /* FBLPromise+Always.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Always.m"; path = "Sources/FBLPromises/FBLPromise+Always.m"; sourceTree = ""; }; + 63C6830F4CD02F7D0DB40621054CC1ED /* FBLPromise+Race.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Race.h"; path = "Sources/FBLPromises/include/FBLPromise+Race.h"; sourceTree = ""; }; + 63CE20593C9D054A778C4EE1FBE78919 /* FIRCLSNetworkResponseHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSNetworkResponseHandler.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSNetworkResponseHandler.h; sourceTree = ""; }; + 63DDEDD0C856EBB6762A9B2FFC35A341 /* GDTCORRegistrar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORRegistrar.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m; sourceTree = ""; }; + 63EECD34A42917661B9B236E26CBBF37 /* FIRInstallationsStoredAuthToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStoredAuthToken.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m; sourceTree = ""; }; + 6434285884CCC1C8C1198696EBAA760B /* pb_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_encode.c; sourceTree = ""; }; + 646ED4A760A0521BE81802444DF21785 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; + 6481E12EAA7D31E5531B2A3DC3EF712D /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = ""; }; + 64AFA26B34ED43217F1339B482553C77 /* GDTCORUploadPackage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadPackage.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h; sourceTree = ""; }; + 64B43E576C16E2102DF55C89C406F0A0 /* NSError+FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+FIRInstanceID.m"; path = "Firebase/InstanceID/NSError+FIRInstanceID.m"; sourceTree = ""; }; + 64F9AD058765F0A1CA4FF9A0E92AA138 /* GoogleUtilities-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-umbrella.h"; sourceTree = ""; }; + 651C10E8048DD2929D532D8DDBC94A69 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = ""; }; + 656077C1E4147E67D93E4B396DF78932 /* FirebaseCrashlytics.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCrashlytics.modulemap; sourceTree = ""; }; + 661D14DDA78F43059C7D979F601CBF35 /* FIRCLSInstallIdentifierModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSInstallIdentifierModel.m; path = Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.m; sourceTree = ""; }; + 6636ACA2BD2F24F49E9EFA5D572A9BAD /* GPBTimestamp.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBTimestamp.pbobjc.h; path = objectivec/GPBTimestamp.pbobjc.h; sourceTree = ""; }; + 6642B3E667C9A30EAF0615D132B2E6B8 /* GoogleUtilities.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleUtilities.modulemap; sourceTree = ""; }; + 665478380DA3CC04FD4F15E33C474936 /* FIRCLSException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSException.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSException.h; sourceTree = ""; }; + 66C3CC76B8449C2B32F2B349CC265AF3 /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = FirebaseCore/Sources/Private/FIRComponentType.h; sourceTree = ""; }; + 67A70FAE7E97277E838C8C43643A1B9F /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + 67C91EA4590CB25FA62EEED6254B1509 /* GTMSessionFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcher.h; path = Source/GTMSessionFetcher.h; sourceTree = ""; }; + 67CBAA8EB35349300BACDFF658284AB0 /* FirebaseInstallations-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseInstallations-umbrella.h"; sourceTree = ""; }; + 67D3F7AC315B6BE6E9F01300F7203EC1 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = ""; }; + 67DB30018627619C8E5A77A5EBFDA06D /* GDTCORTargets.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTargets.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h; sourceTree = ""; }; + 68256CE18A61E0EC5F9BBE995BD72AD5 /* FIRCLSHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSHandler.m; path = Crashlytics/Crashlytics/Handlers/FIRCLSHandler.m; sourceTree = ""; }; + 685886C69E4ED792062B4A2368C437A1 /* nanopb-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-prefix.pch"; sourceTree = ""; }; + 688A171F40FB62D45AD64B0C1C9E7394 /* pb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb.h; sourceTree = ""; }; + 6933569E8134990F05D89398BE58063C /* FIRInstallations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallations.m; path = FirebaseInstallations/Source/Library/FIRInstallations.m; sourceTree = ""; }; 6942351307BC1F54575D9853307EAE0E /* GoogleDataTransportCCTSupport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GoogleDataTransportCCTSupport.framework; path = GoogleDataTransportCCTSupport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6966CB27FB7C2C9ADD860651D7071B40 /* FIRCLSSymbolResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSymbolResolver.h; path = Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.h; sourceTree = ""; }; + 696BDE35DAF24A4C047BC0A023D3C34F /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; 69975D3D749817934CF3B10E0F8A6727 /* Pods-FoodScanTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoodScanTests.debug.xcconfig"; sourceTree = ""; }; - 69A0B9DF544914F9DFE48B1878F863DD /* GDTCCTPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTPrioritizer.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h; sourceTree = ""; }; 69B28F058E36629A0B11929A4BF3372B /* Pods-FoodScanTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoodScanTests.release.xcconfig"; sourceTree = ""; }; - 69F59A55FC55876146A92EBB661C9780 /* FIROptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptions.h; path = FirebaseCore/Sources/Public/FIROptions.h; sourceTree = ""; }; - 6A721E1F4C09F25061FE467CE9A55165 /* GDTCORAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORAssert.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h; sourceTree = ""; }; - 6A80868BA24C82AC0B479D107B4CF849 /* FBLPromise+Delay.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Delay.m"; path = "Sources/FBLPromises/FBLPromise+Delay.m"; sourceTree = ""; }; - 6AAEC6DA8A30ABC67667308E1B82823A /* GULLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerLevel.h; path = GoogleUtilities/Logger/Public/GULLoggerLevel.h; sourceTree = ""; }; - 6AD01007824C54540DB65EF94EB3607C /* FIRCLSDownloadAndSaveSettingsOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDownloadAndSaveSettingsOperation.h; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSDownloadAndSaveSettingsOperation.h; sourceTree = ""; }; - 6B93B7633B3835BC2664252BBF915287 /* FIRCLSURLSessionUploadTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionUploadTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionUploadTask.m; sourceTree = ""; }; - 6BB2EAB7C9C2E639F73625E60EC25DBB /* FBLPromise+Race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Race.m"; path = "Sources/FBLPromises/FBLPromise+Race.m"; sourceTree = ""; }; - 6BC559CD85652373AD4742845AD187E6 /* Duration.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Duration.pbobjc.m; path = objectivec/google/protobuf/Duration.pbobjc.m; sourceTree = ""; }; - 6BDBCB5A922A3939E81BE34161440D72 /* Cosmos-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Cosmos-umbrella.h"; sourceTree = ""; }; - 6BE1EC704E4983E25C22741FD2BEFE0F /* FBLPromise+Await.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Await.h"; path = "Sources/FBLPromises/include/FBLPromise+Await.h"; sourceTree = ""; }; - 6BF4C86277852513762776455A3531A9 /* GoogleUtilities.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleUtilities.xcconfig; sourceTree = ""; }; - 6C0408A380188AFFE476A976684A18E9 /* FirebaseCrashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCrashlytics.h; path = Crashlytics/Crashlytics/Public/FirebaseCrashlytics.h; sourceTree = ""; }; - 6C27E5CDD0272AFAE2658C9D782153DB /* GTLRErrorObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRErrorObject.h; path = Source/Objects/GTLRErrorObject.h; sourceTree = ""; }; - 6C45452E82C34F4250B2D409DAB226AE /* GPBMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBMessage.m; path = objectivec/GPBMessage.m; sourceTree = ""; }; - 6CB8D94894E86DA7169D762EFD06ACFA /* FIRCLSUnwind_x86.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUnwind_x86.h; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_x86.h; sourceTree = ""; }; - 6D1D09BBDDD594313C5C8084323CFD26 /* GDTCOREventDataObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREventDataObject.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h; sourceTree = ""; }; - 6D5AE2C53C67D677436CE6CD04DA9EF6 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - 6D6AB13299DBB67E1B2A7FACC9C179F3 /* GTMSessionFetcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMSessionFetcher.modulemap; sourceTree = ""; }; - 6DD79C6BD45710B578DC2FDAE3C70588 /* FirebaseMLVisionTextModel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseMLVisionTextModel.xcconfig; sourceTree = ""; }; - 6DF26784FB8C6754C21DBB3451ED7091 /* tflite_lstm_recognizer_latin_0.3.lstm_model */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.lstm_model; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.lstm_model; sourceTree = ""; }; - 6E7C8F27BDEBAC64DD1863C505D6EEEA /* FirebaseMLVision.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseMLVision.framework; path = Frameworks/FirebaseMLVision.framework; sourceTree = ""; }; + 69D29151B9D73C9879A5459D8D62DECC /* FIRInstanceIDTokenFetchOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenFetchOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h; sourceTree = ""; }; + 6A06982F049543DAEBA8CE9723CA9EEC /* FIRCLSCrashedMarkerFile.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSCrashedMarkerFile.c; path = Crashlytics/Crashlytics/Components/FIRCLSCrashedMarkerFile.c; sourceTree = ""; }; + 6A0E1D0EAD7C3211A5075A16D640D26D /* NotificationBanner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationBanner.swift; path = NotificationBanner/Classes/NotificationBanner.swift; sourceTree = ""; }; + 6A1D6D8C075FFFE4725EEC0149E55BC6 /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = FirebaseCore/Sources/Private/FIRDependency.h; sourceTree = ""; }; + 6AAAC4E1CEA86B11DFFC6B6267516883 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 6AAD23DB2114CDEA011CC8D664F88146 /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = FirebaseCore/Sources/Private/FIRDependency.h; sourceTree = ""; }; + 6AE37AA83D48E896DF9E41C68FD1FBE1 /* UILoadControl.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UILoadControl.xcconfig; sourceTree = ""; }; + 6B6BCC08D77624EBE7D24B455B0F45D7 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + 6B6C6CE99D456B44806EBB2033AEDFC6 /* IQKeyboardManager.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = IQKeyboardManager.bundle; path = IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle; sourceTree = ""; }; + 6B6E87D50DC66F7B147479B13A291F13 /* GTLRDateTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDateTime.m; path = Source/Objects/GTLRDateTime.m; sourceTree = ""; }; + 6BF04219A8377224598FD0599769B67E /* FIRComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponent.m; path = FirebaseCore/Sources/FIRComponent.m; sourceTree = ""; }; + 6C3F6736ABACB330BE50C02A4CBA2DC1 /* SDWebImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoder.m; path = SDWebImage/SDWebImageCoder.m; sourceTree = ""; }; + 6C60FB2ED34CBD26773DB0F6764018CB /* FirebaseCoreDiagnostics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCoreDiagnostics.xcconfig; sourceTree = ""; }; + 6D562FFF1BD33BC57ECA5F10C5DAEB7B /* GTLRErrorObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRErrorObject.m; path = Source/Objects/GTLRErrorObject.m; sourceTree = ""; }; + 6D9A539737789CC4F66872C0A8D9973B /* FIRCLSBinaryImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSBinaryImage.m; path = Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.m; sourceTree = ""; }; + 6E1643B5E027E1FF9B66796A6D7C5FF0 /* FIRIMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRIMessageCode.h; path = Firebase/InstanceID/FIRIMessageCode.h; sourceTree = ""; }; + 6E2045D29D643A22259667AE936A60CF /* FIRInstallationsAuthTokenResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsAuthTokenResult.m; path = FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m; sourceTree = ""; }; + 6E2A64802F57405C03231A3AB3F56723 /* GULOriginalIMPConvenienceMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULOriginalIMPConvenienceMacros.h; path = GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h; sourceTree = ""; }; + 6E2A9B8190FCFF248D000813E9C3A884 /* FBLPromise+Timeout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Timeout.m"; path = "Sources/FBLPromises/FBLPromise+Timeout.m"; sourceTree = ""; }; + 6E4A08143C05FB2285348129671C6295 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; + 6E54F7A0A7420003D834F95671AB5919 /* FirebaseCore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCore.xcconfig; sourceTree = ""; }; + 6EBB8C6DB4EB95771BE884F1DA8E6C72 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; 6EC4D9CC353F82FA11968EE8503F4A19 /* Pods-FoodScan-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoodScan-acknowledgements.plist"; sourceTree = ""; }; - 6F1CC1C65EE279A0F3B36DB7BBEC27D5 /* cct.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cct.nanopb.c; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c; sourceTree = ""; }; - 6F31644C8FE7BD91FFB64A4D23E222A9 /* FIRCLSThreadState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSThreadState.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSThreadState.h; sourceTree = ""; }; - 6F328A56E9BE0C247F8E6B7697811341 /* FIRAEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAEvent.h; path = Crashlytics/Crashlytics/Helpers/FIRAEvent.h; sourceTree = ""; }; - 6F78691F4AD4DC3E4B0BD01B9F775D7C /* FIRCLSMachOBinary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachOBinary.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOBinary.h; sourceTree = ""; }; - 6FAF4B296DD8DD4F2E6016B09082E8CA /* GULLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULLogger.m; path = GoogleUtilities/Logger/GULLogger.m; sourceTree = ""; }; - 6FE2C2F0DE4056780FA4BDAE92C4CE5B /* GPBArray_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBArray_PackagePrivate.h; path = objectivec/GPBArray_PackagePrivate.h; sourceTree = ""; }; - 6FFBF7CA05659D5DE401970DE4BB9996 /* FBLPromise+Wrap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Wrap.h"; path = "Sources/FBLPromises/include/FBLPromise+Wrap.h"; sourceTree = ""; }; - 705E31027B56932A9873A670F7B2D153 /* MarqueeLabel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MarqueeLabel-Info.plist"; sourceTree = ""; }; - 7076A43812D5FB95FEBE388D7CCBBFA5 /* GPBRuntimeTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBRuntimeTypes.h; path = objectivec/GPBRuntimeTypes.h; sourceTree = ""; }; - 70B5F612EB8CDEB28B257CC71D136F8E /* FIRCLSSymbolicationOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSymbolicationOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.h; sourceTree = ""; }; - 712F6E55B565C28AAE6E341A9229225F /* FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceID.m; path = Firebase/InstanceID/FIRInstanceID.m; sourceTree = ""; }; - 71645F65A5978FF9D30140D6C2A4B52D /* FIRConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRConfiguration.m; path = FirebaseCore/Sources/FIRConfiguration.m; sourceTree = ""; }; - 71E6B23B6C9BCE068D430429C0C52F26 /* GPBCodedOutputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedOutputStream.h; path = objectivec/GPBCodedOutputStream.h; sourceTree = ""; }; - 71E9F80A1F8A66E35F0981825DDCDEA7 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + 6EE9CC88ABF44A98E879106870CD16E3 /* FIRConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfiguration.h; path = FirebaseCore/Sources/Public/FIRConfiguration.h; sourceTree = ""; }; + 6EF35F5EFBD3264FD3B07F711A150627 /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = FirebaseCore/Sources/Private/FIRAppInternal.h; sourceTree = ""; }; + 6EF45E6B34E8A833D201AF18DB4D1DD1 /* FIRCLSHost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSHost.h; path = Crashlytics/Crashlytics/Components/FIRCLSHost.h; sourceTree = ""; }; + 6F090DEC3AA53BE97A7F3D30EABA924B /* GDTCCTUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTUploader.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h; sourceTree = ""; }; + 6F49AEABFA6067D98833975B51CA5A2C /* GoogleDataTransport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransport.xcconfig; sourceTree = ""; }; + 6FE6227E0A26CFEAF1F676F2D06C72E8 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = ""; }; + 71060BE5279D4F67508CEC8C73704332 /* GoogleDataTransport-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleDataTransport-Info.plist"; sourceTree = ""; }; + 712ACD10E77716CCDEF502846A0E93A8 /* FBLPromise+Do.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Do.m"; path = "Sources/FBLPromises/FBLPromise+Do.m"; sourceTree = ""; }; 72057B04BAE956B54AD33D5B97E16B31 /* Pods-FoodScan-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FoodScan-frameworks.sh"; sourceTree = ""; }; - 72EC7F91D344643F41CF915D81B8B2F8 /* FIRCLSByteUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSByteUtility.h; path = Crashlytics/Shared/FIRCLSByteUtility.h; sourceTree = ""; }; - 7305DDA91D75040E07C6F53F287D37B1 /* FIRCLSProfiling.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSProfiling.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSProfiling.c; sourceTree = ""; }; - 7372FE29EB5855DF28798ED1C1FF2B80 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; - 738F1DF5CC5FCFB91B2371F79D60EA75 /* Type.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Type.pbobjc.h; path = objectivec/google/protobuf/Type.pbobjc.h; sourceTree = ""; }; - 73A4AAFFB42047DE5748C887E84260A7 /* FIRCLSDataParsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDataParsing.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.h; sourceTree = ""; }; - 7428D6B81D44FA3D20837B01D303F928 /* Wrappers.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Wrappers.pbobjc.h; path = objectivec/google/protobuf/Wrappers.pbobjc.h; sourceTree = ""; }; - 7450D75F3BA9518DF41D8CA7F5FFCFA9 /* FIRLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRLogger.m; path = FirebaseCore/Sources/FIRLogger.m; sourceTree = ""; }; - 74A583DD8F256F931A4779540288C809 /* GPBUnknownFieldSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUnknownFieldSet.m; path = objectivec/GPBUnknownFieldSet.m; sourceTree = ""; }; - 75120226B1292A2B3B9A4F6E4CA63895 /* GTLRUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUtilities.h; path = Source/Utilities/GTLRUtilities.h; sourceTree = ""; }; - 75AE0BB3237F88D5AA1C2CE91181136A /* FIRInstanceID+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceID+Private.m"; path = "Firebase/InstanceID/FIRInstanceID+Private.m"; sourceTree = ""; }; - 75C73D74F6CA0825E437A5FDFB321B42 /* FIRCLSDataCollectionArbiter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSDataCollectionArbiter.m; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.m; sourceTree = ""; }; - 762E9155A1063DDA02AE680D8AF80FDE /* FirebaseInstallations.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstallations.xcconfig; sourceTree = ""; }; - 76B5DBC9758F9E0F59265342FFA1D677 /* FIRCLSSignal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSignal.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSSignal.h; sourceTree = ""; }; - 776B1FAC2ACEB5193D8B1576DA70AA01 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; - 77DBB73A007448CA49D20461A1EF734A /* GDTCORReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORReachability.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h; sourceTree = ""; }; - 780758F2A840C39D82F041257B97156C /* FIRCLSCrashedMarkerFile.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSCrashedMarkerFile.c; path = Crashlytics/Crashlytics/Components/FIRCLSCrashedMarkerFile.c; sourceTree = ""; }; - 78114B0FFAE0D4F133E69DE777245A5A /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = FirebaseCore/Sources/Private/FIRErrorCode.h; sourceTree = ""; }; - 786ADC128BB9947E7C7C6F103069649B /* GTMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; - 78A08062647DE9ADED79950AD8534A5B /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = ""; }; - 78B4632B7495E163C76D8E856D436E02 /* GPBCodedInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedInputStream.h; path = objectivec/GPBCodedInputStream.h; sourceTree = ""; }; - 791FD48D1E614EB5054DD73F37F4C81C /* FIRInstallationsStoredItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStoredItem.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m; sourceTree = ""; }; - 79AB6C51428445076AB33773B96FE0E9 /* FIRInstanceIDBackupExcludedPlist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDBackupExcludedPlist.m; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m; sourceTree = ""; }; - 7A3A7F1F513EB566E4FB76B576839FA8 /* GDTCORUploadPackage_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadPackage_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h; sourceTree = ""; }; - 7A8D11CF18E4B70C0361E6323D3A40DA /* FIRInstallationsAuthTokenResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAuthTokenResult.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h; sourceTree = ""; }; - 7B45A4BC1D56166F0805B8957CFF0EF9 /* FIRInstallationsStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStore.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h; sourceTree = ""; }; - 7B85845D125B95C06F5ACC48522E1A5F /* FirebaseCrashlytics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCrashlytics-dummy.m"; sourceTree = ""; }; - 7C543B4564E64B8071CD3CD5A9C3C361 /* FBLPromise+Any.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Any.h"; path = "Sources/FBLPromises/include/FBLPromise+Any.h"; sourceTree = ""; }; - 7D0CF2750AF18E72FF48A645A75FE237 /* FIRCLSInternalLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSInternalLogging.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSInternalLogging.h; sourceTree = ""; }; - 7D29DFA073D48CD5A9B4A4CF05F0F6CD /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = ""; }; - 7D46C4CBC22320C96408EC4F4132D48A /* IQKeyboardManager.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = IQKeyboardManager.bundle; path = IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle; sourceTree = ""; }; - 7D80E7B7470CD69EFB6DEBC534477EB5 /* GDTCOREventTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREventTransformer.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h; sourceTree = ""; }; - 7E4E4664E7EFB84A9C87FA41E0B6DE59 /* FIRInteropParameterNames.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInteropParameterNames.h; path = Interop/Analytics/Public/FIRInteropParameterNames.h; sourceTree = ""; }; - 7E875E6EEC39B148F428DFD27DD2E0BF /* FIRCLSHost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSHost.m; path = Crashlytics/Crashlytics/Components/FIRCLSHost.m; sourceTree = ""; }; - 7F23B6DABE4CEBC67FA0DB441CD22EAC /* SDWebImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageFrame.m; path = SDWebImage/SDWebImageFrame.m; sourceTree = ""; }; - 7F5CA172C235EF27B842D7819DB8F96F /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = ""; }; - 7F6D0A625FA0E8F8D7FDE1FAC5866105 /* FIRInstallationsAPIService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAPIService.h; path = FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h; sourceTree = ""; }; - 7F7041BF799BCD3BD2A58F339BC80AAE /* FBLPromise+Then.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Then.m"; path = "Sources/FBLPromises/FBLPromise+Then.m"; sourceTree = ""; }; - 7F7498B7158567865DA5ADFC975F182A /* GDTCORUploadPackage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadPackage.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h; sourceTree = ""; }; - 802907C3F0AD86A91DFC92F5E2FBAD77 /* pb_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_common.h; sourceTree = ""; }; - 808BC07A97958AA7B7205673330FABE5 /* GoogleToolboxForMac.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.xcconfig; sourceTree = ""; }; - 809A8BEAFA2863076B202AE538280451 /* GULUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULUserDefaults.h; path = GoogleUtilities/UserDefaults/Private/GULUserDefaults.h; sourceTree = ""; }; - 80EE37D4DFE79229BBBEBA21590B22C2 /* MarqueeLabel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MarqueeLabel-prefix.pch"; sourceTree = ""; }; - 80F272E53DEC88E88CE17A2A827CDF8E /* FIRInstanceIDTokenFetchOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenFetchOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h; sourceTree = ""; }; - 8108FF912F670E5EFDCBD5B23ABF15D3 /* FIRInstanceIDTokenInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenInfo.h; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.h; sourceTree = ""; }; - 811629BE05D4C163390F47EA71CB25FA /* FirebaseMLCommon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseMLCommon.framework; path = Frameworks/FirebaseMLCommon.framework; sourceTree = ""; }; - 81DBB8D1969154B49F982A988779DE17 /* FirebaseCrashlytics-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCrashlytics-Info.plist"; sourceTree = ""; }; - 82404D8A9BD36D3880C0B059448960BD /* FIRInstallationsSingleOperationPromiseCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsSingleOperationPromiseCache.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h; sourceTree = ""; }; - 82C91DD3874865CDE95CBAFC21933749 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = ""; }; - 82E19C4398E4735192F761570134DCED /* FIRInstallationsErrorUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsErrorUtil.m; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m; sourceTree = ""; }; - 82ED0D7D28C0AAD3FB4CCF03BBB98BA0 /* GDTCORDataFuture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORDataFuture.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m; sourceTree = ""; }; - 831E43DE7649FDB604551056103BC769 /* tflite_lstm_recognizer_latin_0.3.class_lst */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.class_lst; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.class_lst; sourceTree = ""; }; - 8333818071AF76D91171108D74F2C2FB /* FIRInstanceIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenStore.m; path = Firebase/InstanceID/FIRInstanceIDTokenStore.m; sourceTree = ""; }; - 835FFE1EE660F00742EDE566DC8C0071 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = ""; }; - 839D57FA23500F82E99EC270441A1D2D /* FIRCLSFeatures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFeatures.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSFeatures.h; sourceTree = ""; }; - 83F1DDB932632B4DD06F4721ED74A3E0 /* FIRCLSCompoundOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCompoundOperation.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSCompoundOperation.h; sourceTree = ""; }; - 848D5CCF7ED612EF7C532A88636622B9 /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = ""; }; - 84EDA72DC5DBE0EBFF652C4725EE1E97 /* GTLRObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRObject.m; path = Source/Objects/GTLRObject.m; sourceTree = ""; }; + 72F184F00A89B6892E8A35C5F752FB99 /* FIRCLSMachOBinary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachOBinary.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOBinary.h; sourceTree = ""; }; + 738391731D3780409C95CFD6C13F2ADD /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; + 73862593A86A7047265221E8F359D1A0 /* crashlytics.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crashlytics.nanopb.c; path = Crashlytics/Protogen/nanopb/crashlytics.nanopb.c; sourceTree = ""; }; + 73E788E85BE2CDE5B0D40EB349965B88 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; + 74758E69FF604F810D52208123165409 /* FIRCLSHost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSHost.m; path = Crashlytics/Crashlytics/Components/FIRCLSHost.m; sourceTree = ""; }; + 74FFD15BD93B0C189C9B756E238B2D80 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift"; sourceTree = ""; }; + 7580A9D865A2536FFB64A80053AD87FF /* GPBDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDictionary.h; path = objectivec/GPBDictionary.h; sourceTree = ""; }; + 7585666B54299ABB6200E16BD8A407B5 /* FIRCLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReport.h; path = Crashlytics/Crashlytics/Models/FIRCLSReport.h; sourceTree = ""; }; + 7590A8B996077BBBCB58548DD9828305 /* FIRCLSSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSettings.h; path = Crashlytics/Crashlytics/Models/FIRCLSSettings.h; sourceTree = ""; }; + 76414CC873057FD476FDD94C2DB11D64 /* FIRCLSByteUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSByteUtility.h; path = Crashlytics/Shared/FIRCLSByteUtility.h; sourceTree = ""; }; + 76549F1AD8969CC7F609E36419CFFD46 /* Cosmos-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Cosmos-dummy.m"; sourceTree = ""; }; + 76C9705A0AE5E2DFEFFD632D7D2FCE82 /* FBLPromise+Race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Race.m"; path = "Sources/FBLPromises/FBLPromise+Race.m"; sourceTree = ""; }; + 774913319449F64C85BBC4F9713156ED /* FIRCLSContext.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSContext.m; path = Crashlytics/Crashlytics/Components/FIRCLSContext.m; sourceTree = ""; }; + 774D2DB0D181878C5D1D2AC46B874EDE /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSString+URLArguments.h"; path = "Foundation/GTMNSString+URLArguments.h"; sourceTree = ""; }; + 779245CB2D509200D9C7F80957CD00AF /* FIRAEvent+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRAEvent+Internal.h"; path = "Crashlytics/Crashlytics/Helpers/FIRAEvent+Internal.h"; sourceTree = ""; }; + 77A292702E2FBAC8AD02DC344D780FB0 /* GULReachabilityChecker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityChecker.h; path = GoogleUtilities/Reachability/Private/GULReachabilityChecker.h; sourceTree = ""; }; + 78691BF979E6C913C637A7AE844C6BCF /* GPBExtensionRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBExtensionRegistry.m; path = objectivec/GPBExtensionRegistry.m; sourceTree = ""; }; + 78B17A00672F9BF7F5929FDD7C32EBC3 /* FIRInstallationsIIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIIDStore.m; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m; sourceTree = ""; }; + 78FDD561B62C79D13BBCEAB370E0ED19 /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = FirebaseCore/Sources/Private/FIRErrors.h; sourceTree = ""; }; + 790FB337CB3D48F038502957C9E7B50F /* MarqueeLabel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MarqueeLabel.xcconfig; sourceTree = ""; }; + 790FCAB3E311D1BC85E59B8041D34027 /* Struct.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Struct.pbobjc.h; path = objectivec/google/protobuf/Struct.pbobjc.h; sourceTree = ""; }; + 792A088BBC14897EF8C671CEB7D926FC /* GULLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULLogger.m; path = GoogleUtilities/Logger/GULLogger.m; sourceTree = ""; }; + 79EF790BE57C881C259212AE4AD2508B /* FirebaseInstallations-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstallations-dummy.m"; sourceTree = ""; }; + 7A35BA55E255F5F6DBA88EA37DEE0748 /* GDTCORAssert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORAssert.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m; sourceTree = ""; }; + 7A954BB6E2E69CED6A236519D4BBE2F0 /* CosmosLocalizedRating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosLocalizedRating.swift; path = Cosmos/CosmosLocalizedRating.swift; sourceTree = ""; }; + 7AD1435E5922F82C3CF870713CAA2A51 /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = FirebaseCore/Sources/Private/FIRComponentType.h; sourceTree = ""; }; + 7BA1C04E33F4E6E156E37E0C5AB9B5BC /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = FirebaseCore/Sources/Private/FIRComponentContainer.h; sourceTree = ""; }; + 7BAC4CABE1F84DFDDD71393FF8B8EBF1 /* GPBRootObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBRootObject.h; path = objectivec/GPBRootObject.h; sourceTree = ""; }; + 7BD5234C1C948CC3B0378BB5A6F7693B /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = ""; }; + 7C63626B0A12B8A5A1257F74CA8438C9 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/NSButton+WebCache.h"; sourceTree = ""; }; + 7D1D1009EAE5830C9212CC5F2500AFB3 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; + 7D3B3996DF8B175D6C102943B1287C2C /* FIRCLSFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFile.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSFile.m; sourceTree = ""; }; + 7D80D599DE91F60B3796CC3065E45C42 /* GoogleDataTransport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransport-dummy.m"; sourceTree = ""; }; + 7D81997EA728A275415F2B3408377FE7 /* FIRCLSURLSessionAvailability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionAvailability.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSessionAvailability.h; sourceTree = ""; }; + 7DAE3B29C3B2F6B15FBB9A702D5516B2 /* FIRInstanceIDTokenDeleteOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenDeleteOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h; sourceTree = ""; }; + 7DEA7BD494E8985710E6F5511D86D43A /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSDictionary+URLArguments.h"; path = "Foundation/GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; + 7E269E597DCE8B629F9FDB30B150E807 /* FIRCLSNetworkOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSNetworkOperation.h; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSNetworkOperation.h; sourceTree = ""; }; + 7E6562CCBA21E2C419E71B6A7C116FB1 /* Protobuf-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Protobuf-dummy.m"; sourceTree = ""; }; + 7EB1E6C9D4D485FD361568102FE7713B /* FIRInstanceIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenStore.h; path = Firebase/InstanceID/FIRInstanceIDTokenStore.h; sourceTree = ""; }; + 7F48CD4A675CEB1A55561E2A3439B214 /* FBLPromise+Catch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Catch.h"; path = "Sources/FBLPromises/include/FBLPromise+Catch.h"; sourceTree = ""; }; + 7F7385F3405CE27FE5DDCB154B05CB1F /* FIRStackFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRStackFrame.m; path = Crashlytics/Crashlytics/FIRStackFrame.m; sourceTree = ""; }; + 7FCC6B2B6A18D2B1C4AF6C4E9A9A1DF4 /* FIRCLSMachO.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachO.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h; sourceTree = ""; }; + 7FE6A666FB3BBC90A963E7678853FCAD /* FIRHeartbeatInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRHeartbeatInfo.h; path = FirebaseCore/Sources/Private/FIRHeartbeatInfo.h; sourceTree = ""; }; + 806DC306FF3D82DFDD67AB7C0E5A41D7 /* CosmosSize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosSize.swift; path = Cosmos/CosmosSize.swift; sourceTree = ""; }; + 80B23A6B5299A4B5F64391FFA406BB84 /* GDTCORFlatFileStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORFlatFileStorage.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h; sourceTree = ""; }; + 80BC9C2ECD98407F0B7D9116BFFE6CF0 /* FIRStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRStackFrame.h; path = Crashlytics/Crashlytics/Public/FIRStackFrame.h; sourceTree = ""; }; + 80FB1D46BB629B394B2A615786EEEF69 /* GPBEmpty.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBEmpty.pbobjc.h; path = objectivec/GPBEmpty.pbobjc.h; sourceTree = ""; }; + 810EA27159569FC56E8E1D02AA63AAA9 /* FBLPromiseError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromiseError.h; path = Sources/FBLPromises/include/FBLPromiseError.h; sourceTree = ""; }; + 8134F716B87B3E8E6ED20A90F4BA843D /* GPBBootstrap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBBootstrap.h; path = objectivec/GPBBootstrap.h; sourceTree = ""; }; + 8193DE9414443DA205FC47B6F6886D17 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; + 81EC71702E7F4D2BC0DCB968EA902170 /* FIRCLSURLSessionDataTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionDataTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDataTask.m; sourceTree = ""; }; + 81F4AEF35644BE10D3F6902401F743BE /* FIRInstanceIDCheckinPreferences+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceIDCheckinPreferences+Internal.m"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.m"; sourceTree = ""; }; + 822D9EF4AC2FE242E04C7422533D6D39 /* Popover.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Popover.xcconfig; sourceTree = ""; }; + 825120C5B708819A5E8CA6FEB03EA54D /* FBLPromise+Async.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Async.m"; path = "Sources/FBLPromises/FBLPromise+Async.m"; sourceTree = ""; }; + 82AEC7673FE2BE0C66FE5785EEF5D16D /* FIRCLSDemangleOperation.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDemangleOperation.mm; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.mm; sourceTree = ""; }; + 82FDCAC7EB103EDDDB46B963CB310CCA /* pb_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_decode.c; sourceTree = ""; }; + 8303D2DFE07660B53A9C808E252F1405 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = ""; }; + 8306A7A9A272343C7957802E78C8AD6D /* PromisesObjC.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromisesObjC.xcconfig; sourceTree = ""; }; + 83A53CC973BC8DD33C64A188AA2D79A2 /* GPBWrappers.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBWrappers.pbobjc.h; path = objectivec/GPBWrappers.pbobjc.h; sourceTree = ""; }; + 83EBF46F0CC2AAD8253857A56F55B656 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; + 84195E81AEA157FD451A7FE02A941445 /* MarqueeLabel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MarqueeLabel.swift; path = Sources/Swift/MarqueeLabel.swift; sourceTree = ""; }; + 84D0A1612CCFB26A4192E54726E5F551 /* GPBDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBDescriptor.m; path = objectivec/GPBDescriptor.m; sourceTree = ""; }; + 850C9FF7E6D64FC1D3793865DD5F18B4 /* FIRCLSSerializeSymbolicatedFramesOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSerializeSymbolicatedFramesOperation.m; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.m; sourceTree = ""; }; + 852D0AFC96C04B2551BCDD628EB3354C /* FIRInstanceIDTokenOperation+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDTokenOperation+Private.h"; path = "Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h"; sourceTree = ""; }; 853E26053E0F37133D37E03C471A7710 /* Pods-FoodScan.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoodScan.debug.xcconfig"; sourceTree = ""; }; - 854A2BE8A740BFF4CB53562D6EEB7F60 /* FBLPromise+Retry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Retry.h"; path = "Sources/FBLPromises/include/FBLPromise+Retry.h"; sourceTree = ""; }; 856B5CD56F194FAD26EA91620B66D614 /* GoogleDataTransport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GoogleDataTransport.framework; path = GoogleDataTransport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 859B9E184A9DA3541AD938C4A3086B60 /* GTMGatherInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMGatherInputStream.m; path = Source/GTMGatherInputStream.m; sourceTree = ""; }; + 85C522EA015D2014A62E44BF97E474F0 /* FIRHeartbeatInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRHeartbeatInfo.h; path = FirebaseCore/Sources/Private/FIRHeartbeatInfo.h; sourceTree = ""; }; + 85E3DBF8804D324FB37DF5B3B2702486 /* GoogleToolboxForMac-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleToolboxForMac-dummy.m"; sourceTree = ""; }; + 85EBBA77A88452ADC33D50D8289AD5A2 /* GPBUnknownFieldSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUnknownFieldSet.m; path = objectivec/GPBUnknownFieldSet.m; sourceTree = ""; }; 86375444C196BA272DDBB8165BF64A15 /* FirebaseCrashlytics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseCrashlytics.framework; path = FirebaseCrashlytics.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8650E521A61E8BE4A953D3091334B690 /* FIRCLSPackageReportOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSPackageReportOperation.h; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.h; sourceTree = ""; }; - 868F3AAB49310795C5516AA3D75236B6 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; - 87104AF581982761FF5A5F9D39F2871D /* FIRInstanceIDTokenInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenInfo.m; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.m; sourceTree = ""; }; - 886486E8AABFFCCDFFD997E1F5189628 /* CosmosText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosText.swift; path = Cosmos/CosmosText.swift; sourceTree = ""; }; - 88726731F9E6B469AC3D265940576F29 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - 887F101E335BC1A2923F2BAC05ED0E41 /* FIRCLSNetworkClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSNetworkClient.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSNetworkClient.h; sourceTree = ""; }; - 88FE76301D83CFDD602C6F81865DCD92 /* GDTCORTransport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORTransport.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m; sourceTree = ""; }; - 891BE526713AE1493F0C2B749EF16E35 /* FIRInstallationsAPIService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsAPIService.m; path = FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m; sourceTree = ""; }; - 893C6126F6D870A9BB1AA65A903EDED6 /* MarqueeLabel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MarqueeLabel-dummy.m"; sourceTree = ""; }; - 897F1528B5ACC3C7DE817CFD8051126D /* GDTCCTNanopbHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTNanopbHelpers.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m; sourceTree = ""; }; - 89C7B2B743E4E4F4DF5D3863D29C5256 /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = ""; }; - 89DD663D68B01CEDA8D5DD7A7688C917 /* FIRCLSURLSessionAvailability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionAvailability.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSessionAvailability.h; sourceTree = ""; }; - 8A7A6C342F6B92699B71DE0DA7B1D896 /* FIRCLSBinaryImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSBinaryImage.m; path = Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.m; sourceTree = ""; }; - 8B3180116117B0AC65692CC686C0B0AB /* GTLRBatchResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchResult.m; path = Source/Objects/GTLRBatchResult.m; sourceTree = ""; }; - 8B3A87290C576CDCC08D1DB7E0B3DBBC /* NotificationBannerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NotificationBannerSwift.modulemap; sourceTree = ""; }; - 8B413CD1D1AA8166A738B85461793087 /* GDTCOREvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREvent.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h; sourceTree = ""; }; - 8B5D9FFC88CF8583B440A17D5F1C6E4D /* FBLPromise+Async.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Async.h"; path = "Sources/FBLPromises/include/FBLPromise+Async.h"; sourceTree = ""; }; - 8B63497EBE0FE73C5D392AAD155ACF71 /* FIRCLSNetworkResponseHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSNetworkResponseHandler.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSNetworkResponseHandler.m; sourceTree = ""; }; - 8BAAE2807F7096752BFFB107AED235DE /* GPBUnknownField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUnknownField.m; path = objectivec/GPBUnknownField.m; sourceTree = ""; }; - 8BC1AF659E265D6BDA211359BF90C42F /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 8654B4DBA111F6D78096F93A2B9C7539 /* GPBSourceContext.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBSourceContext.pbobjc.h; path = objectivec/GPBSourceContext.pbobjc.h; sourceTree = ""; }; + 8672ECD58E76B351EB951B0ECCB6F547 /* GTMSessionFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcher.m; path = Source/GTMSessionFetcher.m; sourceTree = ""; }; + 86E693529D44CB693E2859C21BD25E72 /* GTMNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSData+zlib.m"; path = "Foundation/GTMNSData+zlib.m"; sourceTree = ""; }; + 870D155E6C225BF12CF707D1146DA2AF /* NotificationBannerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NotificationBannerSwift-prefix.pch"; sourceTree = ""; }; + 8711D439E388C79B95080F5203C3691E /* FBLPromise+Validate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Validate.m"; path = "Sources/FBLPromises/FBLPromise+Validate.m"; sourceTree = ""; }; + 8730D0545872B4BD2DDE842BC90B3954 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; + 874ABFA13CB2F2DEA2E80CCDA7691BF2 /* FIRCLSDataCollectionArbiter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSDataCollectionArbiter.m; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.m; sourceTree = ""; }; + 8758FE286402A950AE1FBC87E6F4C4AC /* GTMMethodCheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMethodCheck.h; path = DebugUtils/GTMMethodCheck.h; sourceTree = ""; }; + 875E9BA7ED0D7702086CD9C80EA12079 /* SDWebImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoderHelper.h; path = SDWebImage/SDWebImageCoderHelper.h; sourceTree = ""; }; + 876D04D2F8020D7D2975D648E7BD721B /* FIRCLSConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSConstants.m; path = Crashlytics/Shared/FIRCLSConstants.m; sourceTree = ""; }; + 87768C3E86840077E5C5D2A8E35FF83D /* cct.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cct.nanopb.c; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c; sourceTree = ""; }; + 8797C65FEF6128853675EE8DA627208D /* FIRInstanceIDURLQueryItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDURLQueryItem.h; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.h; sourceTree = ""; }; + 885E47B012DF5AB0F7EF8BD87C91D3AA /* FirebaseCrashlytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCrashlytics.xcconfig; sourceTree = ""; }; + 88A66EE16D5DD49C030E675386619E9F /* FIRCoreDiagnosticsConnector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnosticsConnector.m; path = FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m; sourceTree = ""; }; + 88C052D1555B4F9AF8353DFFA698E763 /* GULUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULUserDefaults.m; path = GoogleUtilities/UserDefaults/GULUserDefaults.m; sourceTree = ""; }; + 88E8FA21C2C995E2DE375A77D940797E /* GDTCORStorageProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORStorageProtocol.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORStorageProtocol.h; sourceTree = ""; }; + 89880C80D190EFD58C23AB4CCC88939F /* FIRCLSRecordIdentity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSRecordIdentity.h; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.h; sourceTree = ""; }; + 899D1D14881B53CC6FFE6067C6A069B5 /* FIRInstanceIDCheckinPreferences+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDCheckinPreferences+Internal.h"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"; sourceTree = ""; }; + 89A1337A4F8F571535750271C0F695CA /* FIRErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRErrors.m; path = FirebaseCore/Sources/FIRErrors.m; sourceTree = ""; }; + 89D3C208CD8162073B802DE84E16A0A8 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; + 8A1A9CC172ACA2A94470A6DBAF0D5459 /* FIRInstanceIDCheckinStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinStore.m; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.m; sourceTree = ""; }; + 8A791692A887AE75F755F5700D7AB048 /* FIRCLSRecordApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSRecordApplication.m; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.m; sourceTree = ""; }; + 8AA1FE0BEB26F1CDFA775BD8D343EB4C /* GTLRVisionService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRVisionService.m; path = Source/GeneratedServices/Vision/GTLRVisionService.m; sourceTree = ""; }; + 8AAD88F510F99CC7FABAECCC29637E8F /* SDWebImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageGIFCoder.h; path = SDWebImage/SDWebImageGIFCoder.h; sourceTree = ""; }; + 8B0C5DBD5E823DF52591E1DCBA3FF825 /* FIRCLSURLSessionTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionTask.m; sourceTree = ""; }; + 8B1FEA138966D673C514A5CB0D1E3655 /* FIRCLSAllocate.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSAllocate.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSAllocate.c; sourceTree = ""; }; + 8C0A2A1D0F08D86E105EDC46654F0046 /* FirebaseCoreInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCoreInternal.h; path = FirebaseCore/Sources/Private/FirebaseCoreInternal.h; sourceTree = ""; }; + 8C3580B678F83A04686BACEE5150E770 /* GPBUtilities_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUtilities_PackagePrivate.h; path = objectivec/GPBUtilities_PackagePrivate.h; sourceTree = ""; }; + 8C9B0DD0FF123C5BD84926D32C0054C7 /* IQKeyboardManagerSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.xcconfig; sourceTree = ""; }; + 8CC65978AA5DDA97A6A1AD1217EEC800 /* FIRCLSCompactUnwind.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCompactUnwind.h; path = Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.h; sourceTree = ""; }; 8CC9178C366942FD6FF6A115604EAD58 /* FirebaseCoreDiagnostics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseCoreDiagnostics.framework; path = FirebaseCoreDiagnostics.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8CD65B08397C7683A542085DFCB1D673 /* FBLPromise+Validate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Validate.m"; path = "Sources/FBLPromises/FBLPromise+Validate.m"; sourceTree = ""; }; - 8CE1AEC806C03036BEB874EA60AC31DB /* PromisesObjC-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromisesObjC-Info.plist"; sourceTree = ""; }; - 8CE6057074760B846C0A925B4DDA4247 /* UILoadControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UILoadControl.swift; path = Pod/Classes/UILoadControl.swift; sourceTree = ""; }; - 8D11F933B4868F0A41C81A00648D9E62 /* FIRCLSURLBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLBuilder.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSURLBuilder.m; sourceTree = ""; }; - 8D2260F729153D8F8FBEA8363397CFDA /* GTMMIMEDocument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMMIMEDocument.m; path = Source/GTMMIMEDocument.m; sourceTree = ""; }; - 8D91BE52BABDD4C09275748EC35973D2 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; - 8D9B9364A85FB1F020B82B5C670FB69B /* GDTCORConsoleLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORConsoleLogger.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m; sourceTree = ""; }; - 8DA2E5FC7E49DD5DC7EC83646E8511DD /* FIRCLSHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSHandler.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSHandler.h; sourceTree = ""; }; - 8DDDCFD93630C1EB3C92D8D5304E19A3 /* GULHeartbeatDateStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULHeartbeatDateStorage.h; path = GoogleUtilities/Environment/Public/GULHeartbeatDateStorage.h; sourceTree = ""; }; - 8E440DECB4FC1E443C074059EE44B346 /* GTMReadMonitorInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMReadMonitorInputStream.h; path = Source/GTMReadMonitorInputStream.h; sourceTree = ""; }; - 8E872C7CD89F6ECEE914249080A1F110 /* GDTCORReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORReachability.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m; sourceTree = ""; }; - 8EC6800E2194FC35CDACC58EE9E77D31 /* FIRInstallationsHTTPError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsHTTPError.m; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m; sourceTree = ""; }; - 8EE9728FB9411EFE024602E5300DF36F /* GTMMIMEDocument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMIMEDocument.h; path = Source/GTMMIMEDocument.h; sourceTree = ""; }; - 8EFC228D5B2133241C33181151479827 /* GDTCORConsoleLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORConsoleLogger.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h; sourceTree = ""; }; - 8F14425B3F4F3E7F26F9552EBF45ED50 /* SourceContext.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SourceContext.pbobjc.m; path = objectivec/google/protobuf/SourceContext.pbobjc.m; sourceTree = ""; }; - 8F52ACDB18BE515211BC3CD0D84B5052 /* GPBDictionary_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDictionary_PackagePrivate.h; path = objectivec/GPBDictionary_PackagePrivate.h; sourceTree = ""; }; - 8F5ABFD6F8F732B49A94525D6B224699 /* GTMSessionFetcher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.xcconfig; sourceTree = ""; }; - 8F8F2221E66D0C348ACA1048E6D19CFF /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON.swift; sourceTree = ""; }; - 8FF7A2135D2FF36104E617A8D1D51254 /* GPBWireFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBWireFormat.m; path = objectivec/GPBWireFormat.m; sourceTree = ""; }; - 902D4A9BE71ADB472061799597843407 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = ""; }; - 905D80979058E1C711F972E88EC9F511 /* Popover.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Popover.swift; path = Classes/Popover.swift; sourceTree = ""; }; - 90CD17C3ADC01EDE6B41DF729A536C61 /* Popover-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Popover-Info.plist"; sourceTree = ""; }; + 8D02A4DAB91A7D18658CC7BEA453853B /* FIRInstallationsSingleOperationPromiseCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsSingleOperationPromiseCache.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h; sourceTree = ""; }; + 8D16DFDE12A5EA43DAD38E3D5A949D81 /* FIRCrashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCrashlytics.h; path = Crashlytics/Crashlytics/Public/FIRCrashlytics.h; sourceTree = ""; }; + 8D34CB021E9B756A7D61C505A04130F0 /* GTLRVisionService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVisionService.h; path = Source/GeneratedServices/Vision/GTLRVisionService.h; sourceTree = ""; }; + 8D54220C5905C69628BF96FF6C0A8B28 /* GTMSessionFetcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMSessionFetcher.modulemap; sourceTree = ""; }; + 8D90D630E29EC7991D869CB416D2A259 /* GPBDescriptor_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDescriptor_PackagePrivate.h; path = objectivec/GPBDescriptor_PackagePrivate.h; sourceTree = ""; }; + 8DBC27521E04C38624327393D24FA68C /* GoogleDataTransportCCTSupport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransportCCTSupport.xcconfig; sourceTree = ""; }; + 8DDD2114F9AA896977F2B67BDC0AFC19 /* Api.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Api.pbobjc.h; path = objectivec/google/protobuf/Api.pbobjc.h; sourceTree = ""; }; + 8ED60D50090167B0FEC10640B8BC352D /* FIRCLSMultipartMimeStreamEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMultipartMimeStreamEncoder.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSMultipartMimeStreamEncoder.m; sourceTree = ""; }; + 8EDF9B371305736240C5E072780693E1 /* FIRCLSURLSessionConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionConfiguration.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSessionConfiguration.m; sourceTree = ""; }; + 8EEA64B570B8601FF0665E34904A4943 /* Popover-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Popover-Info.plist"; sourceTree = ""; }; + 8EF2E459E39E7C0EAFF99ADE1ACCB5B5 /* FirebaseCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCore.h; path = FirebaseCore/Sources/Public/FirebaseCore.h; sourceTree = ""; }; + 8F0CB73C4FDA2A3619B7C3CCD0BC28B1 /* GPBAny.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBAny.pbobjc.m; path = objectivec/GPBAny.pbobjc.m; sourceTree = ""; }; + 8F519A3D6C9B6155E3B037042374F12C /* FIRCLSProfiling.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSProfiling.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSProfiling.c; sourceTree = ""; }; + 8FB985871DC4392ACC50F4BC00B00CCB /* FIRStackFrame_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRStackFrame_Private.h; path = Crashlytics/Crashlytics/Private/FIRStackFrame_Private.h; sourceTree = ""; }; + 8FE5EEA27261B1375AE3BDD541EE1254 /* GDTCORConsoleLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORConsoleLogger.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h; sourceTree = ""; }; + 9068961FA234A8A48A7B811D3A99AA5D /* FIRCLSFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFile.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSFile.h; sourceTree = ""; }; + 90750149A0B4986E330696CB6D9140D7 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/UIImage+ForceDecode.m"; sourceTree = ""; }; + 90B2BAC986AA3751E9D00BEC06460E19 /* GPBMessage_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBMessage_PackagePrivate.h; path = objectivec/GPBMessage_PackagePrivate.h; sourceTree = ""; }; 90DA5C11FF9EE4A98F1ED18777C47157 /* Pods_FoodScanTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FoodScanTests.framework; path = "Pods-FoodScanTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 90DF3B3C1602D193244A41EE77E63C78 /* FIRCLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSStackFrame.h; path = Crashlytics/Crashlytics/Models/FIRCLSStackFrame.h; sourceTree = ""; }; - 90E1BA661379B9F206BCFEE1AEC17609 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; - 914ED78B4E241912559F4C7A74EE6943 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; - 92F0AC22D728FD7B9B1940CDF0A11257 /* GoogleAPIClientForREST-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleAPIClientForREST-Info.plist"; sourceTree = ""; }; - 92FC9F27DE1638BDBFF6F31E2DA1FA89 /* SDWebImageImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageImageIOCoder.m; path = SDWebImage/SDWebImageImageIOCoder.m; sourceTree = ""; }; - 932E598928694D993AA6177606D62900 /* FIRSecureStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSecureStorage.h; path = FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h; sourceTree = ""; }; - 93C643A51B00E4D1338AEFA2D6777BFA /* FirebaseCoreDiagnostics-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCoreDiagnostics-Info.plist"; sourceTree = ""; }; - 9416C32F1A71DE1E29C63790DEE3EA65 /* FIRInstallationsStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStore.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m; sourceTree = ""; }; - 9436204F1C57B64F9BCC86706E0234B5 /* FIRCLSdSYM.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSdSYM.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSdSYM.m; sourceTree = ""; }; - 94BF47EC123E8C3167197CCC5BD08416 /* FIRCLSUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUtility.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSUtility.h; sourceTree = ""; }; - 950BD2AE277B9A8A1231A1885BD7B600 /* FBLPromise+Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Testing.h"; path = "Sources/FBLPromises/include/FBLPromise+Testing.h"; sourceTree = ""; }; - 951F1E65B45612A23C586BCE421508E3 /* FIRCLSThreadArrayOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSThreadArrayOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.h; sourceTree = ""; }; - 9548675AD375D489884490EB3CDC2D71 /* FIRInstallationsVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsVersion.m; path = FirebaseInstallations/Source/Library/FIRInstallationsVersion.m; sourceTree = ""; }; - 957809922E897B0DA1EF8558EC38B509 /* GPBUnknownField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownField.h; path = objectivec/GPBUnknownField.h; sourceTree = ""; }; - 961FE5DA7A557A3AD55F9A5A8983FB8C /* FIRCLSMultipartMimeStreamEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMultipartMimeStreamEncoder.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSMultipartMimeStreamEncoder.h; sourceTree = ""; }; - 965C6A2BC9CF0493003B4A8B1CED31A2 /* FIRCLSMachException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachException.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSMachException.h; sourceTree = ""; }; - 9676DF37760F7EEC517D2C2B69A2A1EF /* FIRInstanceIDCheckinStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinStore.h; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.h; sourceTree = ""; }; - 96D1377C930B2691422F4AB93CB5024B /* GoogleUtilities-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-umbrella.h"; sourceTree = ""; }; - 975D71F8714322D59935E3C852F36F6E /* GTLRURITemplate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRURITemplate.m; path = Source/Utilities/GTLRURITemplate.m; sourceTree = ""; }; - 97656E4D02F4828E131E5EE74789FBC8 /* FIRAnalyticsInteropListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsInteropListener.h; path = Interop/Analytics/Public/FIRAnalyticsInteropListener.h; sourceTree = ""; }; + 9107E76702327301FACE2A9084DA1EBA /* FIRConfigurationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfigurationInternal.h; path = FirebaseCore/Sources/FIRConfigurationInternal.h; sourceTree = ""; }; + 917C9095F5816662AFF0746F13A97D50 /* FIRInstallationsItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsItem.h; path = FirebaseInstallations/Source/Library/FIRInstallationsItem.h; sourceTree = ""; }; + 91A288EBF5C19454FD6F12A6D197B803 /* FIRInstallationsErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsErrors.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h; sourceTree = ""; }; + 91B34A6E8FCF5A637841C38BAC067ECA /* GoogleToolboxForMac.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.xcconfig; sourceTree = ""; }; + 91F7642F08807BC5E7C3640FB62A6019 /* MarqueeLabel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MarqueeLabel-prefix.pch"; sourceTree = ""; }; + 9237703CC97F126CC1BF0BCDAD8697CD /* FIRCLSInternalReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSInternalReport.h; path = Crashlytics/Crashlytics/Models/FIRCLSInternalReport.h; sourceTree = ""; }; + 92452BA1A9BCDD73530D25E7EAD9C04B /* FirebaseInstallations.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseInstallations.modulemap; sourceTree = ""; }; + 92664586F1AE31B375E80B6BFCA73EB4 /* FIRInstanceIDCheckinPreferences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences.h; path = Firebase/InstanceID/Private/FIRInstanceIDCheckinPreferences.h; sourceTree = ""; }; + 929CD97FA8905CADDE3271B9B6B47887 /* PromisesObjC-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromisesObjC-dummy.m"; sourceTree = ""; }; + 92AF84D108A3ED39356D4684FEAF13AE /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; + 92ED7374776AF1C3E5F24CC572FFF509 /* FIRCoreDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsData.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h; sourceTree = ""; }; + 92F6F64572542B77B8D39D106E5AB4F2 /* FIRInstanceIDUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDUtilities.m; path = Firebase/InstanceID/FIRInstanceIDUtilities.m; sourceTree = ""; }; + 93E669E024A9C324703E103045EB5ADE /* GDTCORLifecycle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORLifecycle.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h; sourceTree = ""; }; + 9495F4577ABC143ABDD144F27F5B2D68 /* FIRCLSMachO.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMachO.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m; sourceTree = ""; }; + 94C84BE73E1ADEA5104E7C92BEAAA9DC /* FIRInstanceIDAuthKeyChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthKeyChain.m; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m; sourceTree = ""; }; + 95044EEF634A25554E16826F63061D15 /* pb_decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_decode.h; sourceTree = ""; }; + 95B87608DF5AA19322199C8F3697AA5C /* FIRCLSCrashedMarkerFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCrashedMarkerFile.h; path = Crashlytics/Crashlytics/Components/FIRCLSCrashedMarkerFile.h; sourceTree = ""; }; + 95C6439C4C345180A37846249F31EA6D /* FIRCoreDiagnosticsConnector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsConnector.h; path = FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h; sourceTree = ""; }; + 95D24C433FEA8DA12C78B604757EC04C /* FIRCLSMachException.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSMachException.c; path = Crashlytics/Crashlytics/Handlers/FIRCLSMachException.c; sourceTree = ""; }; + 95F2C2DEDF23157DD4BAC75EB7007BC8 /* FIRInstallationsStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStore.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h; sourceTree = ""; }; + 960F38F4C2770022D9FC931ABC7D8AFD /* GULNetworkMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkMessageCode.h; path = GoogleUtilities/Network/Private/GULNetworkMessageCode.h; sourceTree = ""; }; + 9700E3EC2C014CB28C60376E67FB047C /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAnalytics.framework; path = Frameworks/FirebaseAnalytics.framework; sourceTree = ""; }; + 97516F8F60D43CABACBE1F5274A96319 /* FIRCLSReport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSReport.m; path = Crashlytics/Crashlytics/Models/FIRCLSReport.m; sourceTree = ""; }; + 975E0410BE3BF1DF3BCD3D21B623C26D /* FIRCLSURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSession.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSession.h; sourceTree = ""; }; 979486118B3E90C08386079D57962701 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit.framework; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 97EA12673C49DB03177EEC75FA27FD1A /* GoogleDataTransportCCTSupport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransportCCTSupport-dummy.m"; sourceTree = ""; }; - 97F54FE5A1A4B8F9E1C5381792EB1B5E /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - 97FD1D9845673451784616D0BD864DC4 /* FIRInstanceIDAuthService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthService.h; path = Firebase/InstanceID/FIRInstanceIDAuthService.h; sourceTree = ""; }; - 98185E26C4710B49AAA911D4AA1CA566 /* nanopb-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "nanopb-Info.plist"; sourceTree = ""; }; - 98236D24F4C2D5489CE42615E4A9643B /* region_proposal_text_detector_tflite_gray_quantized.bincfg */ = {isa = PBXFileReference; includeInIndex = 1; name = region_proposal_text_detector_tflite_gray_quantized.bincfg; path = Resources/GoogleMVTextDetectorResources/region_proposal_text_detector_tflite_gray_quantized.bincfg; sourceTree = ""; }; - 98436BF1430F345E4AC00515C914DB9C /* ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist"; sourceTree = ""; }; - 98A1E9980FEA064D9A26BE5F8C8ABA7C /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - 98EBC8FDBD7FE209F9AE2BA5DC36A5BB /* GTLRFramework.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRFramework.h; path = Source/Utilities/GTLRFramework.h; sourceTree = ""; }; - 99747D3F0ED6B1BC9A97EC6DAA816647 /* FIRCLSInternalReport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSInternalReport.m; path = Crashlytics/Crashlytics/Models/FIRCLSInternalReport.m; sourceTree = ""; }; - 99989B9CF90F157DAC39D721A06393BE /* FIRCLSUnwind.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSUnwind.c; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.c; sourceTree = ""; }; - 9A09C23D7321E7D9D147858565DC301B /* FIRInstanceIDCheckinPreferences_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences_Private.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h; sourceTree = ""; }; + 97CFFF6A97FDDDCF911E92AF03B9AB3F /* GPBCodedOutputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedOutputStream.h; path = objectivec/GPBCodedOutputStream.h; sourceTree = ""; }; + 97DE476864BDD426BDB377F4B66C5BAF /* FIRInstallationsErrorUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsErrorUtil.m; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m; sourceTree = ""; }; + 980DFD14E264C781DE92B3D7B65ABD64 /* FirebaseCrashlytics-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCrashlytics-Info.plist"; sourceTree = ""; }; + 981BA27C443D0904CCD78DC91BB6BF4C /* FBLPromises.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromises.h; path = Sources/FBLPromises/include/FBLPromises.h; sourceTree = ""; }; + 9828298B491FE73D4B2D4FBD8F947EA2 /* FIRInstallationsIIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIIDStore.h; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h; sourceTree = ""; }; + 9852836E9ACF73B3B3CB423FE1FB586A /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; + 986228CEF2013BB0B61F0696573D49C3 /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = FirebaseCore/Sources/Private/FIROptionsInternal.h; sourceTree = ""; }; + 986D0DF23450B51FC428B6126A74B787 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 98A0482755751B5232B93DC7A5CAE77C /* FIRInstallationsHTTPError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsHTTPError.m; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m; sourceTree = ""; }; + 98ADA7DB12BFD493283AD661F37FA722 /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = FirebaseCore/Sources/Private/FIROptionsInternal.h; sourceTree = ""; }; + 98BD0980B72A480B208719EC7ADB48F9 /* tflite_lstm_recognizer_latin_0.3.class_lst */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.class_lst; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.class_lst; sourceTree = ""; }; + 9900CE79B1DD2B7FC3552E48671AC398 /* GPBExtensionInternals.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBExtensionInternals.m; path = objectivec/GPBExtensionInternals.m; sourceTree = ""; }; + 9920F57376A5FF561CECB1A08A49D37F /* FIRCLSThreadArrayOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSThreadArrayOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.h; sourceTree = ""; }; + 99A8C39526289748531691F234EB543D /* FIRInstallationsItem+RegisterInstallationAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstallationsItem+RegisterInstallationAPI.m"; path = "FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m"; sourceTree = ""; }; + 99B354DF272A404829C053955F1FB78E /* GTMGatherInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMGatherInputStream.h; path = Source/GTMGatherInputStream.h; sourceTree = ""; }; + 99B52929F48E237997ADDFDA868DDF26 /* FIRInstanceIDCheckinService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinService.h; path = Firebase/InstanceID/FIRInstanceIDCheckinService.h; sourceTree = ""; }; + 99FCE997354E582E71C1CEE6E969FFD8 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = ""; }; + 9A10D6ADD3816381FB13D9347A47C6FB /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/UIView+WebCache.m"; sourceTree = ""; }; + 9A1DE698CAB850C5936A555528E63CEB /* GTLRURITemplate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRURITemplate.m; path = Source/Utilities/GTLRURITemplate.m; sourceTree = ""; }; 9A1F0267BF1C640035589EA87862E895 /* Pods-FoodScan-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FoodScan-acknowledgements.markdown"; sourceTree = ""; }; - 9A498196B15029777781274E8DF6E458 /* FIRInstanceIDBackupExcludedPlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDBackupExcludedPlist.h; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h; sourceTree = ""; }; - 9A97731FCD86C676B5D97B628FEC623A /* FIRCLSDwarfUnwind.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDwarfUnwind.c; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.c; sourceTree = ""; }; - 9B3CA16A77F491989B36DF5B57717E55 /* FIRInstallationsItem+RegisterInstallationAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstallationsItem+RegisterInstallationAPI.m"; path = "FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m"; sourceTree = ""; }; - 9B70A658316941CCE6652CD6F7CCA566 /* GDTCORRegistrar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORRegistrar.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m; sourceTree = ""; }; - 9C566B75120E142B539E3CA212C2C67B /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; - 9C8692EC9659CE4C4984C64CC0394900 /* FIRCLSInternalReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSInternalReport.h; path = Crashlytics/Crashlytics/Models/FIRCLSInternalReport.h; sourceTree = ""; }; - 9CE948D6E4FC087AC1AAFA68E8232F2D /* FBLPromise+Catch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Catch.m"; path = "Sources/FBLPromises/FBLPromise+Catch.m"; sourceTree = ""; }; - 9CF8766249D479341F19643A4C9B5B6A /* FIRCLSConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSConstants.h; path = Crashlytics/Shared/FIRCLSConstants.h; sourceTree = ""; }; - 9D5990921AAC2DFFAA355B5F6D1CA41A /* FBLPromise+Then.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Then.h"; path = "Sources/FBLPromises/include/FBLPromise+Then.h"; sourceTree = ""; }; - 9D7F5B4D16D2112B121D56AF97C454A4 /* FIRInstanceIDURLQueryItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDURLQueryItem.m; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.m; sourceTree = ""; }; + 9A2F96EDE76BD2591E6C4CC992BCD1DE /* GPBType.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBType.pbobjc.h; path = objectivec/GPBType.pbobjc.h; sourceTree = ""; }; + 9A716956C46DE637638256D75FA70ED7 /* NSImage+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+WebCache.m"; path = "SDWebImage/NSImage+WebCache.m"; sourceTree = ""; }; + 9AB1122A38DFFE7D2821901A4B85C9FC /* GDTCORUploadCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadCoordinator.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h; sourceTree = ""; }; + 9B396839D10A8ED82F9D975D557A05DC /* FBLPromise+Do.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Do.h"; path = "Sources/FBLPromises/include/FBLPromise+Do.h"; sourceTree = ""; }; + 9BAA2085B3F3F2C5FF3A6A63E07CCC9B /* FIRCLSApplicationIdentifierModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSApplicationIdentifierModel.m; path = Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.m; sourceTree = ""; }; + 9BB9596D503C86F7F2065444DDB84827 /* FIRComponentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentType.m; path = FirebaseCore/Sources/FIRComponentType.m; sourceTree = ""; }; + 9CAD568BADDA44EAD0FC34F8A5248863 /* GDTCORTransport_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransport_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h; sourceTree = ""; }; + 9CAF62102263E5AD92606E5EAC91D7B8 /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = FirebaseCore/Sources/Private/FIRComponentType.h; sourceTree = ""; }; + 9CBADFAA802739BC1494D54D633397B2 /* FIRCLSFeatures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFeatures.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSFeatures.h; sourceTree = ""; }; + 9CBC76A84869AA9264A1DB540761FBF5 /* NotificationBannerQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationBannerQueue.swift; path = NotificationBanner/Classes/NotificationBannerQueue.swift; sourceTree = ""; }; + 9D3499ADEFE2D73B02FC8256C8701E25 /* FBLPromise+Await.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Await.h"; path = "Sources/FBLPromises/include/FBLPromise+Await.h"; sourceTree = ""; }; + 9D3DF79AC8E88AC59554AA6F862F5074 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DB22045CD4C649059F31F7CA943F2A8 /* FIRCLSFABHost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFABHost.m; path = Crashlytics/Shared/FIRCLSFABHost.m; sourceTree = ""; }; - 9DC7FA1E17B1D780D1CBE5310DD7291F /* Cosmos-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Cosmos-Info.plist"; sourceTree = ""; }; - 9E077B813DB0C11B78A07A65D62DA8F2 /* FIRInstallationsStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStatus.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h; sourceTree = ""; }; - 9E0A32F5618D1BA3256BE01FAC3F69CE /* UILoadControl.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = UILoadControl.modulemap; sourceTree = ""; }; - 9E27C6EA416EED3AE3325746B6D04B70 /* FIRInstallationsIIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIIDTokenStore.h; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h; sourceTree = ""; }; - 9E5F8A2FB07F90EC23F1EF1078CD10F3 /* GTLRRuntimeCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRRuntimeCommon.h; path = Source/Objects/GTLRRuntimeCommon.h; sourceTree = ""; }; - 9E60980352BA10E7145323A15C441BEF /* pb_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_decode.c; sourceTree = ""; }; - 9E88BC3293DF92604679A39B3B5D6862 /* FIRCLSMultipartMimeStreamEncoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMultipartMimeStreamEncoder.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSMultipartMimeStreamEncoder.m; sourceTree = ""; }; - 9ECBA7FB9DDFE22B535FF31A3A8B9D18 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = ""; }; - 9F688D2614ABAFEF502F1203E8F839FA /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; - 9F9E33865EF0EB4B5671869FE73A0E2F /* FirebaseCore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCore.xcconfig; sourceTree = ""; }; - 9FA11DCEA363993FE8CE9C6E6C5E5319 /* FIRAEvent+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRAEvent+Internal.m"; path = "Crashlytics/Crashlytics/Helpers/FIRAEvent+Internal.m"; sourceTree = ""; }; - A02CA8EF1E6542EE0DF194B65B19A1FC /* GDTCORUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploader.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h; sourceTree = ""; }; - A0EBCFE68DF574D54C95FB927D30118B /* FIRCLSFABHost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABHost.h; path = Crashlytics/Shared/FIRCLSFABHost.h; sourceTree = ""; }; - A141289FC006435FE93B0D1E9E71D109 /* NSImage+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+WebCache.m"; path = "SDWebImage/NSImage+WebCache.m"; sourceTree = ""; }; - A1C896805A7FC4595FD5D7F32CAD03FB /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; - A224A84210EFF5D96ED263E7FDE6BFAA /* GTMMethodCheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMethodCheck.h; path = DebugUtils/GTMMethodCheck.h; sourceTree = ""; }; - A378F74C2B30915962F15789EB48DDE3 /* FIRCLSMachO.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachO.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h; sourceTree = ""; }; - A3E67E16664E6B5E1F7F411C1BE8D1D7 /* FIRCLSDwarfUnwind.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDwarfUnwind.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.h; sourceTree = ""; }; - A48266F2B80CE922C74A2C70EA5CD467 /* FIRInstanceIDCheckinPreferences+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceIDCheckinPreferences+Internal.m"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.m"; sourceTree = ""; }; - A4BAEF8FCE597E3D9CF7201E4755C37C /* GULAppEnvironmentUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppEnvironmentUtil.m; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m; sourceTree = ""; }; - A5B29540360B578E162D4DA6A13F4AD9 /* GDTCORDataFuture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORDataFuture.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h; sourceTree = ""; }; - A5F8C1268B62ABDEB0E23A55C15A96D7 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; - A63947CA56F525451EC85A120D05B366 /* FIRCLSApplicationIdentifierModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSApplicationIdentifierModel.h; path = Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.h; sourceTree = ""; }; - A6416578839E074D2575C0247F57A5D1 /* GULSecureCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSecureCoding.h; path = GoogleUtilities/Environment/Public/GULSecureCoding.h; sourceTree = ""; }; - A67523113508377D071B36843AA3A10D /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = FirebaseCore/Sources/Private/FIRErrors.h; sourceTree = ""; }; - A67F2D5C0B267B8AE5B6AB53A97FD9F8 /* FIRCLSApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSApplication.m; path = Crashlytics/Crashlytics/Components/FIRCLSApplication.m; sourceTree = ""; }; - A6827360ADB66ACFF4D9006D6AA817C1 /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; - A6BC6154B749D01976EDFED4892F71E3 /* FIRCLSException.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSException.mm; path = Crashlytics/Crashlytics/Handlers/FIRCLSException.mm; sourceTree = ""; }; + 9E72597DC264C6E1B0AFB6DDACF20427 /* FIRCLSURLSessionDownloadTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDownloadTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDownloadTask.h; sourceTree = ""; }; + 9ED564152214B5367A9329BC2EA59F8A /* GULSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSwizzler.h; path = GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h; sourceTree = ""; }; + 9F62F329D2CC6476771EA6646536544C /* GoogleAPIClientForREST-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-umbrella.h"; sourceTree = ""; }; + A03FAC71C01C9782C2C5462CEDCC0860 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/SDWebImageTransition.h; sourceTree = ""; }; + A05EDF8917A8A4939BDD88E18D94C2A6 /* FirebaseCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCore-Info.plist"; sourceTree = ""; }; + A06AE7D1337E19D55B9359EEEAF3B69F /* FIRCLSExecutionIdentifierModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSExecutionIdentifierModel.h; path = Crashlytics/Crashlytics/Models/FIRCLSExecutionIdentifierModel.h; sourceTree = ""; }; + A0F26A9D074B7EDE93F0A7C836555AA7 /* GPBRootObject_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBRootObject_PackagePrivate.h; path = objectivec/GPBRootObject_PackagePrivate.h; sourceTree = ""; }; + A12C1324644EF3D830C1BC0FE2BBBDA1 /* FIRInstanceIDTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenManager.h; path = Firebase/InstanceID/FIRInstanceIDTokenManager.h; sourceTree = ""; }; + A15557175136F268BA1D5E803768BDD3 /* NotificationBannerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NotificationBannerSwift-dummy.m"; sourceTree = ""; }; + A1AC6C255FAFDBFDE3F30E0AFD98718F /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift; sourceTree = ""; }; + A2790F6BF008D23076E6A6C1725B0D0F /* GTLRDuration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDuration.m; path = Source/Objects/GTLRDuration.m; sourceTree = ""; }; + A2C53131DF268AFF123BBF305BA6EADF /* FIRCLSDwarfUnwind.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDwarfUnwind.c; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.c; sourceTree = ""; }; + A363A85ACEF996CE582274C3F422B54E /* Any.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Any.pbobjc.h; path = objectivec/google/protobuf/Any.pbobjc.h; sourceTree = ""; }; + A3E7A1E06B25EEF37A5160EC40C0FFE1 /* GoogleAPIClientForREST-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleAPIClientForREST-dummy.m"; sourceTree = ""; }; + A3EECF44CC74B13A8017A288493FD418 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = ""; }; + A3F1F807324C805FEAEE4C2A28A10115 /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; + A415084EDFBDD627D2E93D944178CD64 /* FIRCLSInternalLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSInternalLogging.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSInternalLogging.h; sourceTree = ""; }; + A471924FD26F5382F6024E14FB627FD4 /* FIRCLSURLSessionDataTask_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDataTask_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDataTask_PrivateMethods.h; sourceTree = ""; }; + A5B5AAEF42D3C97C4F84A8A2E2A120FC /* NSImage+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+WebCache.h"; path = "SDWebImage/NSImage+WebCache.h"; sourceTree = ""; }; + A6444B634D4C3FF9BAD16B2B3C50620F /* GoogleAppMeasurement.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAppMeasurement.xcconfig; sourceTree = ""; }; A6BCD1DEB7FC983CBC72326A637CA287 /* Pods-FoodScanTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoodScanTests-Info.plist"; sourceTree = ""; }; - A78327C581F5A5D62A84D29A82E5EF69 /* NSError+FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+FIRInstanceID.h"; path = "Firebase/InstanceID/NSError+FIRInstanceID.h"; sourceTree = ""; }; - A7EC94F4EFE13D665496152D832B7A44 /* FIRCLSAsyncOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSAsyncOperation_Private.h; path = Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation_Private.h; sourceTree = ""; }; - A80857139AE8EE48D8D6401A95E16525 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; + A6BCDD11117CB1DC2249A03FF8D8205E /* FirebaseCoreDiagnostics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCoreDiagnostics-dummy.m"; sourceTree = ""; }; + A6D0EE608D2546961EE1839BCF0D7B45 /* GDTCCTPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTPrioritizer.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h; sourceTree = ""; }; + A6EEEC209D10B9E73FE93DBEB46FE10A /* FIRInstallationsIDController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIDController.m; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m; sourceTree = ""; }; + A712A28C24749F579E69E51F8D67721D /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSDictionary+URLArguments.m"; path = "Foundation/GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; + A71E05A22F2F46F1DE54110802F64207 /* GDTCOREvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREvent.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h; sourceTree = ""; }; + A73B3B6C8EDFD43712C652F666FA03E1 /* GTLRFramework.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRFramework.h; path = Source/Utilities/GTLRFramework.h; sourceTree = ""; }; + A7ADFA7B0C3C0CB5AF238AF905E72B29 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = ""; }; + A7C3964BB83A9C89ACDCBC4EF2A78963 /* FIRCLSConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSConstants.h; path = Crashlytics/Shared/FIRCLSConstants.h; sourceTree = ""; }; + A7EB0B6BEAC3590C8DAF1284D3AE1523 /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; + A81BC0A1802671FFDCEB6766C358F159 /* FIRCoreDiagnostics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnostics.m; path = Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m; sourceTree = ""; }; + A846BB87F91F9F641940A12D49BE1BF8 /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = FirebaseCore/Sources/Private/FIRAppInternal.h; sourceTree = ""; }; + A84C766D1FC02C74EF4A30F95DF67671 /* FIRCLSURLBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLBuilder.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSURLBuilder.h; sourceTree = ""; }; + A86EDFC728B0F8D056ACAD5D22ECAE3E /* CosmosView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosView.swift; path = Cosmos/CosmosView.swift; sourceTree = ""; }; + A87D14B4FCB09A9CEC4CAD8527CCD9AF /* GTMReadMonitorInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMReadMonitorInputStream.m; path = Source/GTMReadMonitorInputStream.m; sourceTree = ""; }; + A8DF0433DA66F8B29FF166EE000D1A1E /* RightToLeft.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RightToLeft.swift; path = Cosmos/Helpers/RightToLeft.swift; sourceTree = ""; }; A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift.framework; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A98092A9113418AB18B8AF889D7EA252 /* SDWebImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageFrame.h; path = SDWebImage/SDWebImageFrame.h; sourceTree = ""; }; - AA78DF784DC85F09B4B8567481AF4DCD /* firebasecore.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = firebasecore.nanopb.h; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h; sourceTree = ""; }; - AAFF4BD5723500231CF6B5032823A139 /* FIRErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRErrors.m; path = FirebaseCore/Sources/FIRErrors.m; sourceTree = ""; }; - AB4F9BF31FD2C166A607E55642E362CD /* FBLPromise+Await.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Await.m"; path = "Sources/FBLPromises/FBLPromise+Await.m"; sourceTree = ""; }; + A8F919B1A184845E1AB792C8C642FB48 /* FIRInstallationsAuthTokenResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAuthTokenResult.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h; sourceTree = ""; }; + A90756D50AD67413EF59F34F99FF9966 /* GDTCORRegistrar_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORRegistrar_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h; sourceTree = ""; }; + A94758F71CB3AADAA52AD0491E12E3EF /* Type.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Type.pbobjc.h; path = objectivec/google/protobuf/Type.pbobjc.h; sourceTree = ""; }; + A96A4552CDDA8E166C9BD1639FC8850D /* FIRCLSAllocate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSAllocate.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSAllocate.h; sourceTree = ""; }; + A9823116ED2876A15810482C80126E1B /* nanopb.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = nanopb.modulemap; sourceTree = ""; }; + A9A63B1DE3B7B037345A19741FAEBA60 /* FIRCLSURLSessionTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionTask.h; sourceTree = ""; }; + A9D93A3EE2610E0D4B864E6146BD35F6 /* GoogleAPIClientForREST-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleAPIClientForREST-Info.plist"; sourceTree = ""; }; + A9E04FDCF97C8F6B06C175EF69368F0E /* nanopb-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nanopb-dummy.m"; sourceTree = ""; }; + A9EBCEC49043982E9E59EE2A94399A16 /* Popover-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Popover-prefix.pch"; sourceTree = ""; }; + AAC3EFCF175788B229E87D981F263D2E /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = FirebaseCore/Sources/Private/FIRErrorCode.h; sourceTree = ""; }; + AAC40467721C333F59A071097C7B805C /* FIRHeartbeatInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRHeartbeatInfo.m; path = FirebaseCore/Sources/FIRHeartbeatInfo.m; sourceTree = ""; }; + AB0271E2DD0E130B2E2996CA4BD62B2D /* GPBEmpty.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBEmpty.pbobjc.m; path = objectivec/GPBEmpty.pbobjc.m; sourceTree = ""; }; + AB0AFF6ACF73131B19D9A1636B66B5F0 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; + AB61AF2BD0C7D162A1DC05C2F962371A /* FIRCLSSymbolResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSymbolResolver.h; path = Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.h; sourceTree = ""; }; AB6D9FCDB6152123B5E7EA78790B4AEC /* Pods-FoodScanUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoodScanUITests-acknowledgements.plist"; sourceTree = ""; }; - AB9B3B4064F68DE03277AD108EE049B0 /* FIRCLSURLSessionDownloadTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionDownloadTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDownloadTask.m; sourceTree = ""; }; - AC46BB1E9C4A4306D717511E9322DEB3 /* UILoadControl-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-prefix.pch"; sourceTree = ""; }; - AC598886E99330152E424A86844474BB /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/NSButton+WebCache.h"; sourceTree = ""; }; - AC9844E9D7DF0314A25FD98E9669621D /* GoogleUtilities-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleUtilities-Info.plist"; sourceTree = ""; }; - ACA113DCC26FB5C004C3D1E579B7A682 /* GPBCodedOutputStream_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedOutputStream_PackagePrivate.h; path = objectivec/GPBCodedOutputStream_PackagePrivate.h; sourceTree = ""; }; - ACA695ED1F9A5F82B342F36A415A7547 /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; - ACEC420CD79D412150AF06E59E334878 /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; - ACF84AC422BD6301FEA8E64ABDC2C6DF /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/UIImage+ForceDecode.h"; sourceTree = ""; }; - ADE68A1DB87E18DF0EFCBA867DD27A2F /* GTLRVisionService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVisionService.h; path = Source/GeneratedServices/Vision/GTLRVisionService.h; sourceTree = ""; }; - AE19CA4B1440E093AC7D82A72FD181D7 /* FIRInstallationsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsVersion.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h; sourceTree = ""; }; - AE799177B9845221FDA6466E85E8C87B /* FIRCLSReportUploader_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportUploader_Private.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader_Private.h; sourceTree = ""; }; - AED8F3FAEBA75A84D5078228900B3540 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = ""; }; - AF38B7A656B8D28F042437914588D2E9 /* NotificationBannerSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NotificationBannerSwift.xcconfig; sourceTree = ""; }; - AF9F9B6D2825D73EBB937DDAC0D58CA6 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; - AFC6E469AEE1C7946FEABB1877BF44C8 /* FIRInstanceIDCheckinPreferences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences.h; path = Firebase/InstanceID/Private/FIRInstanceIDCheckinPreferences.h; sourceTree = ""; }; - B0832DDCBCCC1C16A0D214E80D690565 /* FIRCLSURLSessionConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionConfiguration.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSessionConfiguration.h; sourceTree = ""; }; + AB8C0A9D625E92ACEA873A6778C1AA0C /* Popover.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Popover.modulemap; sourceTree = ""; }; + AB91CEC13614EF16232D18BF9B1BEB2D /* GTLRObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRObject.h; path = Source/Objects/GTLRObject.h; sourceTree = ""; }; + ABB21CC643DC3204C973D9E0BA2619DD /* GTLRUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUtilities.m; path = Source/Utilities/GTLRUtilities.m; sourceTree = ""; }; + ABCC74246F50C40370F53276FC1EB614 /* Wrappers.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Wrappers.pbobjc.h; path = objectivec/google/protobuf/Wrappers.pbobjc.h; sourceTree = ""; }; + ABDF1E46F94EA1AF46BE993FA199C9DE /* GTLRQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRQuery.h; path = Source/Objects/GTLRQuery.h; sourceTree = ""; }; + AC17E340D03C27B3DA3C106567470567 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + AC3EC2A7604D0F3DF6DAE10C5FE7A241 /* FIRInstanceIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStore.m; path = Firebase/InstanceID/FIRInstanceIDStore.m; sourceTree = ""; }; + AC5439A87E6B53D26D56DE6ED285E244 /* GPBMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBMessage.h; path = objectivec/GPBMessage.h; sourceTree = ""; }; + AC7CCD9A1B0623B31D1D182F3C75130F /* GoogleToolboxForMac-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleToolboxForMac-Info.plist"; sourceTree = ""; }; + AD295C22A1C12132CE297FE036C8E804 /* GPBUnknownField_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownField_PackagePrivate.h; path = objectivec/GPBUnknownField_PackagePrivate.h; sourceTree = ""; }; + AD72DF0AB7CA22F97B2B2CBD70034903 /* GULMutableDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULMutableDictionary.m; path = GoogleUtilities/Network/GULMutableDictionary.m; sourceTree = ""; }; + AD7F713CFFE9CD932A94A9BCFB9B1055 /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Firebase/InstanceID/Public/FIRInstanceID.h; sourceTree = ""; }; + ADD0631B7ACA3830BBF4DD70A5C75C51 /* Cosmos.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Cosmos.modulemap; sourceTree = ""; }; + ADD8EA51DCA114E670593F70F7DABA5D /* GPBUnknownField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUnknownField.m; path = objectivec/GPBUnknownField.m; sourceTree = ""; }; + AE0C8836C6821B23714C7C8D0CFCC3A1 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = ""; }; + AE6F3DC19988998C45D91E4808E3EEAA /* GULKeychainStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULKeychainStorage.m; path = GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m; sourceTree = ""; }; + AEC59A5DCFCC4AEF73DB0E2BE04A16B5 /* GPBTimestamp.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBTimestamp.pbobjc.m; path = objectivec/GPBTimestamp.pbobjc.m; sourceTree = ""; }; + AF69B17357D0B60659AAA0BCBD6C18B9 /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = FirebaseCore/Sources/Private/FIRLogger.h; sourceTree = ""; }; + B00DA36C3E33D5F38AE88D21583D8A3E /* FIRCLSSymbolResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSymbolResolver.m; path = Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.m; sourceTree = ""; }; + B0201621FFB18E55FBF6AA5605CE8626 /* FBLPromise+Then.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Then.m"; path = "Sources/FBLPromises/FBLPromise+Then.m"; sourceTree = ""; }; + B07900E59D71AD43916C73EA2ABEE914 /* GTLRFramework.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRFramework.m; path = Source/Utilities/GTLRFramework.m; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage.framework; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B19FF47C184C31B3C892CE6C62B8C2DF /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = ""; }; - B1E3D38D23D714B84CA8B20E7E452442 /* GULHeartbeatDateStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULHeartbeatDateStorage.m; path = GoogleUtilities/Environment/GULHeartbeatDateStorage.m; sourceTree = ""; }; - B2324379A88A90B566F9C2B5DC27D5A8 /* PromisesObjC-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromisesObjC-dummy.m"; sourceTree = ""; }; - B2922AC23A8F254705AEE1AF3A26BD8C /* FIRCLSUserLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUserLogging.h; path = Crashlytics/Crashlytics/Components/FIRCLSUserLogging.h; sourceTree = ""; }; - B297B45BB766BB2D8C167BE12A5FD07C /* FirebaseCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCore.modulemap; sourceTree = ""; }; - B3989DA7E8A929385FF24036FD5488E0 /* FIRInstanceIDCombinedHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCombinedHandler.m; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.m; sourceTree = ""; }; - B3D5FAEB0E3594B3A200989FFF2365AB /* FIRCLSProcess.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSProcess.c; path = Crashlytics/Crashlytics/Components/FIRCLSProcess.c; sourceTree = ""; }; - B4051B1F03248C4D19DD499CECF9C811 /* SourceContext.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SourceContext.pbobjc.h; path = objectivec/google/protobuf/SourceContext.pbobjc.h; sourceTree = ""; }; - B4061ABA17485F8A8FAD765E5502AF61 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/SDWebImageTransition.h; sourceTree = ""; }; + B0F874152100C9D34034BE05287011BF /* FIRCLSRecordApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSRecordApplication.h; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.h; sourceTree = ""; }; + B118A7841D4491C258D2367018343F7B /* GULNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULNSData+zlib.h"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.h"; sourceTree = ""; }; + B1CBBC1D5EC4F07D848640D5F7562D93 /* FIRCLSApplicationIdentifierModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSApplicationIdentifierModel.h; path = Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.h; sourceTree = ""; }; + B23CB0E543EF08826E83C2A1E39BFE84 /* FIRHeartbeatInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRHeartbeatInfo.h; path = FirebaseCore/Sources/Private/FIRHeartbeatInfo.h; sourceTree = ""; }; + B2D4CB67FC8B41EE8F0248D7B8FB8DAF /* FBLPromise+All.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+All.h"; path = "Sources/FBLPromises/include/FBLPromise+All.h"; sourceTree = ""; }; + B30B5A958997E51478E3609B1EA611DD /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; + B34FC5648E501433F254403DEA249CF5 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; + B38BF3464C12B6D228E99E7B909DE98E /* GTLRDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDefines.h; path = Source/GTLRDefines.h; sourceTree = ""; }; + B3A76A7453555132D0D27D17FBF2BF81 /* FIRCLSBinaryImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSBinaryImage.h; path = Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.h; sourceTree = ""; }; + B3B30F20326967C59817E91FCE64BD2B /* GULKeychainUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULKeychainUtils.h; path = GoogleUtilities/Environment/Public/GULKeychainUtils.h; sourceTree = ""; }; + B42426476D12774187E98D5BFE4CE700 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; B43874C6CBB50E7134FBEC24BABFE14F /* GoogleUtilities.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GoogleUtilities.framework; path = GoogleUtilities.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B46575E66007A40EE693DC9E49ED2EB9 /* GPBWellKnownTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBWellKnownTypes.m; path = objectivec/GPBWellKnownTypes.m; sourceTree = ""; }; - B4D131CF5C54B1CFCC36697B48234DFD /* FIRInstallationsIDController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIDController.m; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m; sourceTree = ""; }; - B4F73073113433827EED13C099FA7563 /* Duration.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Duration.pbobjc.h; path = objectivec/google/protobuf/Duration.pbobjc.h; sourceTree = ""; }; - B4FE5C4697F12AD7A63E2A150E567939 /* FirebaseCrashlytics.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCrashlytics.modulemap; sourceTree = ""; }; - B538FD1F3DB341C24820175F8DA452E2 /* FIRComponentContainerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainerInternal.h; path = FirebaseCore/Sources/Private/FIRComponentContainerInternal.h; sourceTree = ""; }; - B6048F7B5686FAE2A99E49ECF605A636 /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; - B616C44669FB2DBFA8DB638065BF5224 /* FBLPromise+Timeout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Timeout.h"; path = "Sources/FBLPromises/include/FBLPromise+Timeout.h"; sourceTree = ""; }; - B622A8D1F54BBED4389D1B839FF1B563 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = ""; }; - B6347938369655E1257BC31BC42D0719 /* FirebaseCoreDiagnostics-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCoreDiagnostics-umbrella.h"; sourceTree = ""; }; - B660020338109295504EC39BC2326932 /* FIRInstanceIDUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDUtilities.h; path = Firebase/InstanceID/FIRInstanceIDUtilities.h; sourceTree = ""; }; - B6710F34F5F4B757F6F0A5D28A1E285B /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = ""; }; - B6B5621C660EC1234710268B631E1908 /* FIRDependency.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDependency.m; path = FirebaseCore/Sources/FIRDependency.m; sourceTree = ""; }; - B6D500047C134A1E297902BB665A9EA0 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite */ = {isa = PBXFileReference; includeInIndex = 1; name = rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite; path = Resources/GoogleMVTextDetectorResources/rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite; sourceTree = ""; }; - B6EBCB5E6E4BE058CD2717A63FC299FB /* NSImage+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+WebCache.h"; path = "SDWebImage/NSImage+WebCache.h"; sourceTree = ""; }; - B6FC7057CA2D222DF9BBF4DF726A545C /* FIRInstallationsErrorUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsErrorUtil.h; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h; sourceTree = ""; }; + B48304C89645A2741E543561DF31AE05 /* FIRCLSSymbolicationOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSymbolicationOperation.m; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.m; sourceTree = ""; }; + B4B90F4759A59FDEB7D13017C7F8E7A7 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; + B55AAFCFCAE88D4D115DF85DB07C782C /* GULHeartbeatDateStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULHeartbeatDateStorage.m; path = GoogleUtilities/Environment/GULHeartbeatDateStorage.m; sourceTree = ""; }; + B568720C6E0225CB63CD3E6872E3C1BE /* Empty.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Empty.pbobjc.h; path = objectivec/google/protobuf/Empty.pbobjc.h; sourceTree = ""; }; + B5F715858774F0085C398BA3EF4B5E56 /* FIRInstanceIDAuthService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthService.h; path = Firebase/InstanceID/FIRInstanceIDAuthService.h; sourceTree = ""; }; + B5FC07BD00B9FB747E527E791B798460 /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = FirebaseCore/Sources/Private/FIRAppInternal.h; sourceTree = ""; }; + B607B08EA816E182180FB6DC29BE3878 /* GoogleDataTransport-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleDataTransport-umbrella.h"; sourceTree = ""; }; + B6B47AB5107B86998E47F57D031FF297 /* GPBArray_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBArray_PackagePrivate.h; path = objectivec/GPBArray_PackagePrivate.h; sourceTree = ""; }; + B6EF8D3F0368EC84D4830CA7EDE09842 /* SDWebImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoder.h; path = SDWebImage/SDWebImageCoder.h; sourceTree = ""; }; B72A389B0E6A6DD2F3D61F4DC7F84D83 /* Popover.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Popover.framework; path = Popover.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B7D9DAE98F6A05D6DEB7D4E62DD96FF7 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = ""; }; - B7E2C10502F965A7733AB0239BCB969D /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = ""; }; - B96821357715CF0E3B1A62937C9ABF55 /* GPBDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDescriptor.h; path = objectivec/GPBDescriptor.h; sourceTree = ""; }; - BA8F0D2EB14F6AC0A360F44F0A92F447 /* FIRCLSURLSessionDataTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionDataTask.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDataTask.m; sourceTree = ""; }; - BA9FBD8266751176A47CC0F8BD8D25DC /* FIRCLSByteUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSByteUtility.m; path = Crashlytics/Shared/FIRCLSByteUtility.m; sourceTree = ""; }; - BAA39626F0C014A6D605CCD29D4C0FEC /* GTMSessionUploadFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionUploadFetcher.h; path = Source/GTMSessionUploadFetcher.h; sourceTree = ""; }; + B746AB00B1C549A92A786CFDBDE851D3 /* FIRCLSSignal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSignal.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSSignal.h; sourceTree = ""; }; + B83697E728164C4BBBB5DB3765FCB0DB /* FIRInstanceIDCheckinService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinService.m; path = Firebase/InstanceID/FIRInstanceIDCheckinService.m; sourceTree = ""; }; + B849DA3C41FC58DBB5BDE4FFCE455C53 /* GoogleAPIClientForREST.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.xcconfig; sourceTree = ""; }; + B86F07C36621AA59AC076729A888DA0C /* NotificationBannerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NotificationBannerSwift-umbrella.h"; sourceTree = ""; }; + B873FC591A968B4FF2843287B360CFBF /* GPBUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUtilities.h; path = objectivec/GPBUtilities.h; sourceTree = ""; }; + B8956CF579CF6834C76ABCEC5EA8DFB4 /* MarqueeLabel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MarqueeLabel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B89CBDFCDB9CD05CF62C5F713FF21E5D /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; + B8AFE134A25611133C0F83C1072A96B7 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + B8E1BF17ADD998CFAF9839AF429D8E62 /* GoogleUtilities.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleUtilities.xcconfig; sourceTree = ""; }; + B8F366E4FDAB5177B2984C747EABC315 /* tflite_lstm_recognizer_latin_0.3.lstm_model */ = {isa = PBXFileReference; includeInIndex = 1; name = tflite_lstm_recognizer_latin_0.3.lstm_model; path = Resources/GoogleMVTextDetectorResources/tflite_lstm_recognizer_latin_0.3.lstm_model; sourceTree = ""; }; + B95DB0867FADA2A2F2F6ABC69ED6B384 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = ""; }; + B999E871C10C540CF2E89F6E7C7E6804 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = ""; }; + B9BA538EF0A675F87DA279DE2865ED04 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = ""; }; + B9BF6E7DF2E6A6A11465E97EB6BCB1FF /* FIRCoreDiagnosticsConnector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsConnector.h; path = FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h; sourceTree = ""; }; + BA36FEDD104E5F0CA64A4C376FF2148A /* GULMutableDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULMutableDictionary.h; path = GoogleUtilities/Network/Private/GULMutableDictionary.h; sourceTree = ""; }; + BAB1166009894524FAE7A7EA35EA50C0 /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = ""; }; BAF4EC4B68165797EB1BCD1504B3490B /* Pods-FoodScan.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FoodScan.modulemap"; sourceTree = ""; }; - BB611DE355A471B6AE18D0BF50576813 /* FIRCLSMachOSlice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMachOSlice.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOSlice.m; sourceTree = ""; }; - BBF9BF21D70F8DD5FF169FEE1345DAA7 /* FieldMask.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FieldMask.pbobjc.m; path = objectivec/google/protobuf/FieldMask.pbobjc.m; sourceTree = ""; }; - BC25E46F74BB67B221D96E4987D3963C /* FIRInstallationsLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsLogger.m; path = FirebaseInstallations/Source/Library/FIRInstallationsLogger.m; sourceTree = ""; }; - BC2EE7BCBA8C6B977095F140F50A3D03 /* FIRBundleUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRBundleUtil.m; path = FirebaseCore/Sources/FIRBundleUtil.m; sourceTree = ""; }; - BC6C26FA89F5178AF575CE3A57BD7735 /* FIRIMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRIMessageCode.h; path = Firebase/InstanceID/FIRIMessageCode.h; sourceTree = ""; }; - BCB1ED1A81CC8E434AAD8911CE62056A /* Popover.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Popover.modulemap; sourceTree = ""; }; - BD4EA0FD27E2A52E9A9F7CE92485631A /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - BD565B727B823597DEC8B6B741B29046 /* FIRCLSExecutionIdentifierModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSExecutionIdentifierModel.m; path = Crashlytics/Crashlytics/Models/FIRCLSExecutionIdentifierModel.m; sourceTree = ""; }; - BD5A227D657289824B605E5450A39323 /* GPBArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBArray.h; path = objectivec/GPBArray.h; sourceTree = ""; }; - BD7E34CF9731B575459F5087F8C9EA17 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSString+URLArguments.m"; path = "Foundation/GTMNSString+URLArguments.m"; sourceTree = ""; }; - BD82D2B8C2CB6110A8350365F70324CF /* CosmosDefaultSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosDefaultSettings.swift; path = Cosmos/CosmosDefaultSettings.swift; sourceTree = ""; }; - BDC0B939245A06998182C0FEE1F1B0D8 /* GTLRQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRQuery.h; path = Source/Objects/GTLRQuery.h; sourceTree = ""; }; - BDF7AA1E0A01F0DCDDBA6EE564D3F54D /* FIRAppAssociationRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAppAssociationRegistration.m; path = FirebaseCore/Sources/FIRAppAssociationRegistration.m; sourceTree = ""; }; - BE09DB0E5396BBBF34BE96A7DDA3B953 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/SDImageCacheConfig.h; sourceTree = ""; }; - BE0A8B7B5F0532386438277E17BC779C /* pb_decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_decode.h; sourceTree = ""; }; - BE51E96565306AF33366D3F92C9364F1 /* FIRCLSUserDefaults_private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUserDefaults_private.h; path = Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults_private.h; sourceTree = ""; }; - BE6C0EA7ED43F0AF19D397798238EE5C /* FIRCLSURLSessionConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSessionConfiguration.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSessionConfiguration.m; sourceTree = ""; }; - BED6B3F4E2B6A1B3C0F44985AC9CE9A6 /* FIRCLSOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSOperation.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSOperation.h; sourceTree = ""; }; - BEED5CF6A7D848A52E8280255897EE24 /* GoogleDataTransport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransport.xcconfig; sourceTree = ""; }; - BF37CEDA5CAF31E771E0C7176D3009E0 /* SDWebImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageGIFCoder.h; path = SDWebImage/SDWebImageGIFCoder.h; sourceTree = ""; }; - BFCCD9324F36FFDB4DC77E66CD54CF0B /* FIRInstanceIDCombinedHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCombinedHandler.h; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.h; sourceTree = ""; }; - BFD44C8AF7C144D4B5A206B71DEF5C83 /* FirebaseCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseCore-Info.plist"; sourceTree = ""; }; - C02B778495605C23E49DFAC7CBAB7A60 /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; - C04EB758C696167A57DB872837B7948B /* FIRInstanceIDCheckinPreferences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinPreferences.m; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.m; sourceTree = ""; }; - C09A79E74A7FB16A854BCADFE204ABD2 /* PromisesObjC.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromisesObjC.xcconfig; sourceTree = ""; }; - C0D23030E4CAA269EEF302C589DA27FE /* FIRCLSFABAsyncOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABAsyncOperation.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation.h; sourceTree = ""; }; - C1073D238EEF63A4AB0710C67BFB7561 /* FIRCLSReportUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportUploader.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.h; sourceTree = ""; }; - C15B2E5E078C27C0CA11AD7B5A41C245 /* FIRAnalyticsInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsInterop.h; path = Interop/Analytics/Public/FIRAnalyticsInterop.h; sourceTree = ""; }; - C18403726406D5B32E789E3FED03C9F8 /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugSelectorValidation.h; path = DebugUtils/GTMDebugSelectorValidation.h; sourceTree = ""; }; + BBBA5B442142F5BD208A507B04B27332 /* GoogleUtilities-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleUtilities-dummy.m"; sourceTree = ""; }; + BBFEC177A6E3D6C2C760B3B3E80AEC49 /* GDTCOREventDataObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREventDataObject.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h; sourceTree = ""; }; + BC128AE86A5BBF7A3C9CB909FEAFABF2 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; + BCA5CEC9939DB30C9FF68097315C21F9 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; + BCF7A8FA853345B37488A1F86C765AFC /* GPBDictionary_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDictionary_PackagePrivate.h; path = objectivec/GPBDictionary_PackagePrivate.h; sourceTree = ""; }; + BCF9781B75895C4AF33976BD77281358 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; + BD66A3BD61009595B0D4ADE189709EF1 /* GTLRUploadParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUploadParameters.h; path = Source/Objects/GTLRUploadParameters.h; sourceTree = ""; }; + BDBC5364C79661CE791B40872C3CF379 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + BDD3C243553962B5B9F73E4E5EB307AC /* CosmosLayerHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosLayerHelper.swift; path = Cosmos/CosmosLayerHelper.swift; sourceTree = ""; }; + BDD6052C6B0D6447C8A789F014A4CC18 /* GPBWellKnownTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBWellKnownTypes.m; path = objectivec/GPBWellKnownTypes.m; sourceTree = ""; }; + BDDDC0609E2C2399052E6A816A1F02C4 /* firebasecore.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = firebasecore.nanopb.h; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h; sourceTree = ""; }; + BE5DA8A520A5D3E33B98DFAE48EE8122 /* GoogleDataTransport.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleDataTransport.modulemap; sourceTree = ""; }; + BE5E9CC51EAEBD9F4FF97CAA9CA30B49 /* FIRCLSDataCollectionToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDataCollectionToken.h; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionToken.h; sourceTree = ""; }; + BE9B50D1E08657347194A18DA9107C78 /* FIRInstanceIDTokenInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenInfo.m; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.m; sourceTree = ""; }; + BEE9D298AB277618B1DCAE3DAED0E9E3 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; + BF5503DC7BCC86D7F3B07D0C0B2ABC7B /* FIRInstanceIDCombinedHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCombinedHandler.h; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.h; sourceTree = ""; }; + BF709C7EDFF1535DD045158156303831 /* GTLRBatchResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchResult.h; path = Source/Objects/GTLRBatchResult.h; sourceTree = ""; }; + BF9698F082CDD6898BACC2EB9410118C /* GPBUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUtilities.m; path = objectivec/GPBUtilities.m; sourceTree = ""; }; + BFC87053382666919FF291B7F579093A /* GTMSessionFetcherLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherLogging.m; path = Source/GTMSessionFetcherLogging.m; sourceTree = ""; }; + BFEC01FDA9975222171199B34F2BD454 /* GoogleAPIClientForREST-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-prefix.pch"; sourceTree = ""; }; + C02980344A342676CECCD9CB672ED5F5 /* GoogleDataTransportCCTSupport.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleDataTransportCCTSupport.modulemap; sourceTree = ""; }; + C043DAFB27572B1584BBA1305968CA49 /* FIRInteropEventNames.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInteropEventNames.h; path = Interop/Analytics/Public/FIRInteropEventNames.h; sourceTree = ""; }; + C07B2347F3B80C6128934E4FBC27024B /* FIRCLSInternalReport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSInternalReport.m; path = Crashlytics/Crashlytics/Models/FIRCLSInternalReport.m; sourceTree = ""; }; + C0919E5D891EA663A1698C14A98DB343 /* SourceContext.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SourceContext.pbobjc.h; path = objectivec/google/protobuf/SourceContext.pbobjc.h; sourceTree = ""; }; + C0F53E584067D52CC1FE58031A8A490B /* FIRCLSAsyncOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSAsyncOperation.m; path = Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation.m; sourceTree = ""; }; + C10B9EBBC7A1D58A4C5188E6F8CC60BC /* GTLRURITemplate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRURITemplate.h; path = Source/Utilities/GTLRURITemplate.h; sourceTree = ""; }; + C140BD47F2A6FC52A70CC155BB440066 /* FIRCLSRecordHost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSRecordHost.h; path = Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.h; sourceTree = ""; }; + C1476393CB7CEAA1C2BCBE7EA578D20D /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = ""; }; + C16C9A398024A0F0FEE442411FA99832 /* GULSceneDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSceneDelegateSwizzler.m; path = GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m; sourceTree = ""; }; + C1752DBA39F3F80A32F8B041CB1EEAE8 /* GPBExtensionInternals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBExtensionInternals.h; path = objectivec/GPBExtensionInternals.h; sourceTree = ""; }; + C1770C5FC3AC59BB9A0452DAEC111D36 /* FIRCLSdSYM.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSdSYM.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSdSYM.m; sourceTree = ""; }; C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GTMSessionFetcher.framework; path = GTMSessionFetcher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C1D880B0CFB05E8A73862E2406107F7F /* GTLRDuration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDuration.h; path = Source/Objects/GTLRDuration.h; sourceTree = ""; }; - C1D91B2B960B40A99CCAB95DC63A549D /* MarqueeLabel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MarqueeLabel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C20D5CAF0BAB4C4542387CA2C9C09F37 /* GPBUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUtilities.h; path = objectivec/GPBUtilities.h; sourceTree = ""; }; - C2105C94812B6214B154F54DCEDB72AC /* protobuf.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = protobuf.framework; path = Protobuf.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C22282E424832931EFA1A677984EE790 /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = ""; }; - C292D349E71DD4301764B8C6D030B468 /* FIRBundleUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRBundleUtil.h; path = FirebaseCore/Sources/FIRBundleUtil.h; sourceTree = ""; }; - C2B808561A83CD24DDDA3C1579199BBC /* GoogleDataTransportCCTSupport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransportCCTSupport.xcconfig; sourceTree = ""; }; - C2B843789E16BCC61CA5BDB3696D6218 /* FIRCLSAllocate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSAllocate.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSAllocate.h; sourceTree = ""; }; - C30B8252426B6AB0000C47D67E4C1BB8 /* Struct.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Struct.pbobjc.h; path = objectivec/google/protobuf/Struct.pbobjc.h; sourceTree = ""; }; - C30C791C0900E3D6D448685C791EC0BD /* GTLRBatchQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchQuery.h; path = Source/Objects/GTLRBatchQuery.h; sourceTree = ""; }; - C334F1FC2C14A4F10D1460C07BF157A2 /* FIRConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfiguration.h; path = FirebaseCore/Sources/Public/FIRConfiguration.h; sourceTree = ""; }; - C33FF87380DCB915F23ADBCD48E56466 /* BannerStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerStyle.swift; path = NotificationBanner/Classes/BannerStyle.swift; sourceTree = ""; }; + C1C4A2C3E98EBA4303C8BA546CA273F0 /* IQKeyboardManagerConstantsInternal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstantsInternal.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift; sourceTree = ""; }; + C2105C94812B6214B154F54DCEDB72AC /* Protobuf.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Protobuf.framework; path = Protobuf.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C250B3162877D73DD11713960F5D0BA8 /* GPBCodedInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedInputStream.h; path = objectivec/GPBCodedInputStream.h; sourceTree = ""; }; + C2703B96BBA49784D661D07D07EFE838 /* FIRInstallationsErrorUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsErrorUtil.h; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h; sourceTree = ""; }; + C27518B9F8E142F75D550A5AE2A6949E /* FIRCLSAsyncOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSAsyncOperation.h; path = Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation.h; sourceTree = ""; }; + C2E98EC05769543C0D402ACE95405C39 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/SDAnimatedImageRep.m; sourceTree = ""; }; + C329D93DBDE2EA9482B8C8B03A163394 /* GTMMIMEDocument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMMIMEDocument.m; path = Source/GTMMIMEDocument.m; sourceTree = ""; }; + C32B9744EEA882FB2676F3F71A20DDE1 /* FIRCLSMultipartMimeStreamEncoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMultipartMimeStreamEncoder.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSMultipartMimeStreamEncoder.h; sourceTree = ""; }; + C3306D4A62F64B9DD21462375FAC9DD1 /* FirebaseCrashlytics-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCrashlytics-umbrella.h"; sourceTree = ""; }; C35B5E47182EEB647D9AD2A282655170 /* Pods-FoodScanUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FoodScanUITests-acknowledgements.markdown"; sourceTree = ""; }; - C3D54EFDF94E3155BABDA545BAE91F8F /* rpn_lstm_engine_tflite_latin.bincfg */ = {isa = PBXFileReference; includeInIndex = 1; name = rpn_lstm_engine_tflite_latin.bincfg; path = Resources/GoogleMVTextDetectorResources/rpn_lstm_engine_tflite_latin.bincfg; sourceTree = ""; }; - C415AE2ACCD452A3A536AE6F60F77824 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = ""; }; - C44667F7CDE660CC6F42C1DA7E215BCD /* FIRCLSUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUserDefaults.h; path = Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.h; sourceTree = ""; }; - C4B86F9ED67B54F3D847EBCE12311FEA /* GoogleDataTransportCCTSupport-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleDataTransportCCTSupport-umbrella.h"; sourceTree = ""; }; - C4F449E0BBE717ADF94DCD5052058AB7 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - C4F8A30BFC013CFCC515DCD7610BF203 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; - C53F2833FA43F1A51E0DFBB4442506AE /* FIRCLSMachOBinary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMachOBinary.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOBinary.m; sourceTree = ""; }; - C578258B0FF0AF5BCD11F6479298EB1B /* FIRInstanceIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenStore.h; path = Firebase/InstanceID/FIRInstanceIDTokenStore.h; sourceTree = ""; }; - C593786CC71BA458ACA15A655630E238 /* FIRCLSProfiling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSProfiling.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSProfiling.h; sourceTree = ""; }; - C5B94621C5C335C790753FE8D82B4D9E /* GDTCORTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORTransformer.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m; sourceTree = ""; }; - C5E24EED8B8003A61F485263C9A9D8B7 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; - C60637BE799BBEAF968A2E5075C39A48 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - C65B081187E922A0B90A445F6672724A /* FIRCLSContext.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSContext.m; path = Crashlytics/Crashlytics/Components/FIRCLSContext.m; sourceTree = ""; }; - C68F87057CC5E82EE0E65DF30B52F4DE /* FIRComponentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentContainer.m; path = FirebaseCore/Sources/FIRComponentContainer.m; sourceTree = ""; }; - C6D3861EEEDA86A90235CDE69AB29047 /* FIRInstanceIDURLQueryItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDURLQueryItem.h; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.h; sourceTree = ""; }; - C7D20154AB3EAD7670D3A4306B078A11 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = ""; }; - C7D9945952692B5A307A84E882241324 /* FIRInstanceIDConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDConstants.m; path = Firebase/InstanceID/FIRInstanceIDConstants.m; sourceTree = ""; }; - C818E2DD7B3A324E3E9DBDB3FB0990AD /* FIRCLSSerializeSymbolicatedFramesOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSerializeSymbolicatedFramesOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.h; sourceTree = ""; }; - C81A7FC59D4F7C9DF300A2B27AA358B3 /* FIRInstanceIDTokenFetchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenFetchOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m; sourceTree = ""; }; - C885905D9C970F74BD84428DD2F4E31A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - C8B9D6924A46C38E364B78A420F42507 /* FirebaseInstallations-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstallations-dummy.m"; sourceTree = ""; }; - C8CB0A6FD375E60EC6C7F2BE145167E2 /* FIRCLSCompoundOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSCompoundOperation.m; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSCompoundOperation.m; sourceTree = ""; }; - C933DB82BF8D22E502795AFA968739F0 /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = FirebaseCore/Sources/Private/FIRComponentType.h; sourceTree = ""; }; - C9AC191F9D4D561895A733F6E64264BD /* Type.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Type.pbobjc.m; path = objectivec/google/protobuf/Type.pbobjc.m; sourceTree = ""; }; - C9C5F7A7A2A8AC2737447DEBE827C35D /* FIRInstanceIDLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDLogger.m; path = Firebase/InstanceID/FIRInstanceIDLogger.m; sourceTree = ""; }; - CA29893DBA60A9ACB725A81BE180B8A4 /* GPBExtensionInternals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBExtensionInternals.h; path = objectivec/GPBExtensionInternals.h; sourceTree = ""; }; - CA2E39F3A7DBCB21120519698BB1A1EA /* CosmosSize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosSize.swift; path = Cosmos/CosmosSize.swift; sourceTree = ""; }; - CA4BB572D4C6DDF7D7CE543A86C06A18 /* nanopb.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = nanopb.modulemap; sourceTree = ""; }; - CAFF6BED9E8C596A3BB9C9DB76F01936 /* Protobuf-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Protobuf-umbrella.h"; sourceTree = ""; }; - CB11B0973DB51B95046870D13A199DC9 /* FIRCLSUnwind.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUnwind.h; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.h; sourceTree = ""; }; - CB79C2954E8BB40A3E4C45D328C1BC2C /* Api.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Api.pbobjc.m; path = objectivec/google/protobuf/Api.pbobjc.m; sourceTree = ""; }; - CBAE68482E86A52BA045CF3DC8C8C8B9 /* GTMSessionFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcher.m; path = Source/GTMSessionFetcher.m; sourceTree = ""; }; - CC257B3206836A2C2E9B96A2AD3D472B /* FIRCLSReportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSReportManager.m; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.m; sourceTree = ""; }; - CC4BBEA7A1DDF7150A3D1A7A9513044C /* GTMGatherInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMGatherInputStream.h; path = Source/GTMGatherInputStream.h; sourceTree = ""; }; - CCD17DE4F0C590404D8FC9209692B049 /* FIRCLSURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSession.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSession.h; sourceTree = ""; }; - CCD59B550B2415659118252954BCF3C1 /* FBLPromise+Validate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Validate.h"; path = "Sources/FBLPromises/include/FBLPromise+Validate.h"; sourceTree = ""; }; - CD2DBDBAB6DD4904B55F16662B7404C3 /* dwarf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dwarf.h; path = Crashlytics/third_party/libunwind/dwarf.h; sourceTree = ""; }; - CD62F08BFCBBCDC30EEC20C1E4C8E1BB /* Firebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Firebase.h; path = CoreOnly/Sources/Firebase.h; sourceTree = ""; }; - CE92C815E6AFDA4D30B939AADE7BF4FB /* FIRCLSURLSessionDownloadTask_PrivateMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDownloadTask_PrivateMethods.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDownloadTask_PrivateMethods.h; sourceTree = ""; }; - CE9C3E58C550C2C62C30BDCC2397E722 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + C36608B635BFE55860CFAA61DA40E8E0 /* GoogleToolboxForMac-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-prefix.pch"; sourceTree = ""; }; + C368C4AF1BAE18F2438F780F28AC7CBB /* FBLPromise+Catch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Catch.m"; path = "Sources/FBLPromises/FBLPromise+Catch.m"; sourceTree = ""; }; + C3D175FAC843230B40804C9AABC78F2C /* GULReachabilityChecker+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULReachabilityChecker+Internal.h"; path = "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h"; sourceTree = ""; }; + C40BDFE3ABF169C2869E2DB9150C2E83 /* GULLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerLevel.h; path = GoogleUtilities/Logger/Public/GULLoggerLevel.h; sourceTree = ""; }; + C45EF0E4BD21B870B401AC7A9F4BC934 /* FIRCLSFABHost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABHost.h; path = Crashlytics/Shared/FIRCLSFABHost.h; sourceTree = ""; }; + C4C091C5640211AC0377400F24710CB4 /* MarqueeLabel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MarqueeLabel-dummy.m"; sourceTree = ""; }; + C4E2C7E2225634F7AEA87AC4F2C36528 /* GTMSessionFetcherService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherService.h; path = Source/GTMSessionFetcherService.h; sourceTree = ""; }; + C4F6E746701AC73DCC98361610FF0A71 /* CosmosTouch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosTouch.swift; path = Cosmos/CosmosTouch.swift; sourceTree = ""; }; + C5099C01F9833C4D029213F012E1C997 /* FIRDependency.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDependency.m; path = FirebaseCore/Sources/FIRDependency.m; sourceTree = ""; }; + C52B51A2A45A39A4E8EEE0CB88B7076D /* GTMNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSData+zlib.h"; path = "Foundation/GTMNSData+zlib.h"; sourceTree = ""; }; + C58B91484E8387B29013766FA217BAEF /* GPBCodedOutputStream_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedOutputStream_PackagePrivate.h; path = objectivec/GPBCodedOutputStream_PackagePrivate.h; sourceTree = ""; }; + C5AA603C740FCF14740E7440454D2155 /* UILoadControl-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "UILoadControl-Info.plist"; sourceTree = ""; }; + C5B76EF81EE74DF255F60549BEE27727 /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = FirebaseCore/Sources/Private/FIRComponentContainer.h; sourceTree = ""; }; + C5EB426ABF9FCA11F89F3F309AC9FE3C /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift"; sourceTree = ""; }; + C64EC9F0E633A955BB36BC139AE045BA /* GTLRRuntimeCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRRuntimeCommon.h; path = Source/Objects/GTLRRuntimeCommon.h; sourceTree = ""; }; + C68A7A29F011511E60A7A11E9C400E2E /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift"; sourceTree = ""; }; + C6C7C141E0398ED5F9C02385BA5FB0EF /* FIRCLSMachOSlice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMachOSlice.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOSlice.m; sourceTree = ""; }; + C6FBB890FF5FC74FA5B2AFC3D425EA37 /* FIRCLSSignal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSSignal.c; path = Crashlytics/Crashlytics/Handlers/FIRCLSSignal.c; sourceTree = ""; }; + C7512CD0FDB413574E66A937DA3C2496 /* GULKeychainStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULKeychainStorage.h; path = GoogleUtilities/Environment/Public/GULKeychainStorage.h; sourceTree = ""; }; + C757ACAC1FCD254EB154071DBE8D2185 /* Timestamp.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Timestamp.pbobjc.h; path = objectivec/google/protobuf/Timestamp.pbobjc.h; sourceTree = ""; }; + C7624AE339E6677CDB95C5CF481B90ED /* GDTCORClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORClock.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h; sourceTree = ""; }; + C76FCBCFAA8EDEEB469261D73B608719 /* GULSceneDelegateSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSceneDelegateSwizzler.h; path = GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h; sourceTree = ""; }; + C7797E42C4F235E88A5D752724D0AB04 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = ""; }; + C7B1EAA4A477F38205B2C733480E41E6 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = ""; }; + C7C3F6AF0D8BABE7FDC8712B1F5F1579 /* GDTCORPlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORPlatform.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m; sourceTree = ""; }; + C8282674C2FF7CED5AAC2D694564F791 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/UIView+WebCache.h"; sourceTree = ""; }; + C8C317561E7A87A548178712E84A069E /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; + C95B0565E06E039114FD8E7902FB3E92 /* GTLRRuntimeCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRRuntimeCommon.m; path = Source/Objects/GTLRRuntimeCommon.m; sourceTree = ""; }; + C98D7214A49530C0A0780FEC6B8E10A9 /* nanopb-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-umbrella.h"; sourceTree = ""; }; + C99FB980F9823AC715AF974425023B16 /* FIRInstallationsStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStore.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m; sourceTree = ""; }; + CA48374AFE7501C00683F27FFDEF98FF /* FIRInstallationsVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsVersion.m; path = FirebaseInstallations/Source/Library/FIRInstallationsVersion.m; sourceTree = ""; }; + CA4AC523F37B34B8FE5DD0C667585D7E /* UILoadControl.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = UILoadControl.modulemap; sourceTree = ""; }; + CAABA1152FEECDC18858D8E1A53F644D /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = ""; }; + CB094D325E2D94FFEDDD9215A3E5B073 /* FIRCLSURLSessionConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionConfiguration.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSessionConfiguration.h; sourceTree = ""; }; + CBA2D83ABB9E02704D87D23F684F8742 /* FIRAppAssociationRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppAssociationRegistration.h; path = FirebaseCore/Sources/FIRAppAssociationRegistration.h; sourceTree = ""; }; + CBBC58456FD12B9C80B77E30FC1E815D /* FIRInteropParameterNames.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInteropParameterNames.h; path = Interop/Analytics/Public/FIRInteropParameterNames.h; sourceTree = ""; }; + CBE3CFC948CA8A3DC3AA8A6EDD12B777 /* SDWebImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoderHelper.m; path = SDWebImage/SDWebImageCoderHelper.m; sourceTree = ""; }; + CC2B48EB97EE43AF4BCAFAF314327ACD /* FIRInstallationsIDController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIDController.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h; sourceTree = ""; }; + CC5098685A6600BEC3D9AD5DB82CD7AB /* StarLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StarLayer.swift; path = Cosmos/StarLayer.swift; sourceTree = ""; }; + CCAD323052C3D1E7B740854B004F5AAD /* CosmosDefaultSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosDefaultSettings.swift; path = Cosmos/CosmosDefaultSettings.swift; sourceTree = ""; }; + CD37B056601A30F417C746B6B01D818A /* GPBDuration.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDuration.pbobjc.h; path = objectivec/GPBDuration.pbobjc.h; sourceTree = ""; }; + CD6FD85142C2A91F5EECBA1503EF722D /* GTLRVisionObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVisionObjects.h; path = Source/GeneratedServices/Vision/GTLRVisionObjects.h; sourceTree = ""; }; + CE67C85F5535F874E0D491B50DC8351D /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + CE76024C0AAD301092B3FBE1E329F758 /* FIRCLSDownloadAndSaveSettingsOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSDownloadAndSaveSettingsOperation.m; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSDownloadAndSaveSettingsOperation.m; sourceTree = ""; }; + CEA25900D804AA753A5477197C443259 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/SDWebImageTransition.m; sourceTree = ""; }; + CEEAACB4E59FB1E322EAC766AA494625 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CF0AA9FBFBDB70858C030769541505ED /* MarqueeLabel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MarqueeLabel.framework; path = MarqueeLabel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CFBA599CAF9BA50DF7049394C4E0199B /* FIRInstanceIDConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDConstants.h; path = Firebase/InstanceID/FIRInstanceIDConstants.h; sourceTree = ""; }; - CFE157363AEE3534CF29968BBE06DD82 /* FIRCLSReport_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReport_Private.h; path = Crashlytics/Crashlytics/Models/FIRCLSReport_Private.h; sourceTree = ""; }; - CFE53228CC4463A73B9943588D83F655 /* FIRCLSUnwind_arch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUnwind_arch.h; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arch.h; sourceTree = ""; }; - CFFE2188B67D210BC7D89EA385BA8707 /* FirebaseMLVisionTextModel.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseMLVisionTextModel.framework; path = Frameworks/FirebaseMLVisionTextModel.framework; sourceTree = ""; }; - D07B83A5A7F388A584D3D9EF72F60C8B /* SDWebImageImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageImageIOCoder.h; path = SDWebImage/SDWebImageImageIOCoder.h; sourceTree = ""; }; - D0B2FDAFA70FA4B0BC2118584E6E421A /* GTLRDateTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDateTime.h; path = Source/Objects/GTLRDateTime.h; sourceTree = ""; }; - D1409CA7C52A52B5A88D28715E442E70 /* PromisesObjC.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromisesObjC.modulemap; sourceTree = ""; }; - D1729F1B8052D9DC7D57A84B39A03B4A /* GPBDescriptor_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDescriptor_PackagePrivate.h; path = objectivec/GPBDescriptor_PackagePrivate.h; sourceTree = ""; }; - D18CA124D9017FEEA10DAAFDC857DF1D /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = FirebaseCore/Sources/Private/FIRAppInternal.h; sourceTree = ""; }; - D1A20A78F89127940FEC73E5ACDE332E /* GDTCOREvent_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREvent_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h; sourceTree = ""; }; - D1BD030ACD34773526FA4A3DD5E9A07A /* FIRCLSLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSLogger.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSLogger.h; sourceTree = ""; }; - D1CB907638B66D17671F1124658DFB2C /* GDTCORPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORPrioritizer.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h; sourceTree = ""; }; - D1E3BA3568609D149DE08C6F1299071A /* GPBUnknownField_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownField_PackagePrivate.h; path = objectivec/GPBUnknownField_PackagePrivate.h; sourceTree = ""; }; + CF0F1360C0B548EE1F3556785DBA7E01 /* FIRInstanceIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDDefines.h; path = Firebase/InstanceID/FIRInstanceIDDefines.h; sourceTree = ""; }; + CFC760F59509EB5504CA40112221FE9E /* GTLRBatchResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchResult.m; path = Source/Objects/GTLRBatchResult.m; sourceTree = ""; }; + D00219A677D07FDE9DC4472059174638 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + D02D2DCC50E6AEE893DD1ABD1624E98C /* FIRCLSUserLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUserLogging.h; path = Crashlytics/Crashlytics/Components/FIRCLSUserLogging.h; sourceTree = ""; }; + D02F7687CCC6F6A2772F9C0CE8D9D047 /* FIRInstallationsStoredAuthToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStoredAuthToken.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h; sourceTree = ""; }; + D0314071DC5A55E04EF4E1982F56667E /* GDTCCTCompressionHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTCompressionHelper.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTCompressionHelper.m; sourceTree = ""; }; + D04F5160EFF5CA2B8546D6DCDB609443 /* FIRInstanceIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStore.h; path = Firebase/InstanceID/FIRInstanceIDStore.h; sourceTree = ""; }; + D0E8AB74A897C27C52DFCE4991212079 /* GDTCCTCompressionHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTCompressionHelper.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h; sourceTree = ""; }; + D13EEB6AC5D6A59BF6CE2466EB746541 /* SDWebImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageGIFCoder.m; path = SDWebImage/SDWebImageGIFCoder.m; sourceTree = ""; }; + D1C17D6BCCE0FD1190FE02412BE42487 /* FIRCLSUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUtility.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSUtility.m; sourceTree = ""; }; + D1C80D4E67922558FA02BD7DEBC197C6 /* GDTCORFlatFileStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORFlatFileStorage.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m; sourceTree = ""; }; + D1E31C3EABC8ED0992D9CAAC2C72273A /* FIRCLSPackageReportOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSPackageReportOperation.m; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSPackageReportOperation.m; sourceTree = ""; }; D1E557C160ADF50B1E64450EAC68D08D /* Pods-FoodScan-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FoodScan-dummy.m"; sourceTree = ""; }; - D32EFECDFCFA4965010C951905CA941D /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; - D33BF0CAF409D4BB4DB6C3A1AD096FD1 /* UILoadControl-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UILoadControl-dummy.m"; sourceTree = ""; }; - D35B6D2BF425B37177EF471F4F18710D /* FIRCLSCodeMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSCodeMapping.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSCodeMapping.m; sourceTree = ""; }; - D37FCD3205910563C2025DE3FFD2F158 /* FBLPromise+Testing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Testing.m"; path = "Sources/FBLPromises/FBLPromise+Testing.m"; sourceTree = ""; }; - D38ED208B2DE52F4CDD0D0400572507F /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = FirebaseCore/Sources/Private/FIROptionsInternal.h; sourceTree = ""; }; - D3AC6A181FC59E47B0D65021B15BFFD8 /* FIRDiagnosticsData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDiagnosticsData.m; path = FirebaseCore/Sources/FIRDiagnosticsData.m; sourceTree = ""; }; - D3CA33CB9FB0457CE6E198E04AFA7455 /* FIRInstallations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallations.m; path = FirebaseInstallations/Source/Library/FIRInstallations.m; sourceTree = ""; }; - D3ECC965E0CAEBA5A523D75EADF88143 /* FIRInstanceIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDDefines.h; path = Firebase/InstanceID/FIRInstanceIDDefines.h; sourceTree = ""; }; - D4106261F27E712181D4F6458B7EF097 /* GTLRObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRObject.h; path = Source/Objects/GTLRObject.h; sourceTree = ""; }; - D44D3EF70F3C66467AE20E8925F76FC7 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift"; sourceTree = ""; }; - D49A1F32A758094F2EBF25B4249E1473 /* FIRCLSDownloadAndSaveSettingsOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSDownloadAndSaveSettingsOperation.m; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSDownloadAndSaveSettingsOperation.m; sourceTree = ""; }; - D4B0021FAAF4ACC70B30B11C41289250 /* FIRCLSDataCollectionToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDataCollectionToken.h; path = Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionToken.h; sourceTree = ""; }; - D4D6F12670FC4AE13D7EB8F44277CCC9 /* NotificationBannerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NotificationBannerSwift-Info.plist"; sourceTree = ""; }; - D514740650A34422209B0B01A550AD74 /* FIRCoreDiagnosticsConnector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsConnector.h; path = FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h; sourceTree = ""; }; - D545D687E14A116AED262D7A19881936 /* UILoadControl.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UILoadControl.xcconfig; sourceTree = ""; }; - D560F208088F9C16347E6648692D6709 /* Api.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Api.pbobjc.h; path = objectivec/google/protobuf/Api.pbobjc.h; sourceTree = ""; }; - D56A6B870CEC6C5A30B83967E7C27A44 /* GoogleToolboxForMac.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleToolboxForMac.modulemap; sourceTree = ""; }; - D575C43C31BBD7BB61348B5FE3B28275 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; - D586D9805C30E3070112732088F0318D /* Struct.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Struct.pbobjc.m; path = objectivec/google/protobuf/Struct.pbobjc.m; sourceTree = ""; }; - D5D8BFBE5313ABA4DAC213A1218F092A /* FIRAnalyticsConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsConfiguration.h; path = FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h; sourceTree = ""; }; - D60F1FB4F3DD45B0A607FD408B40E00D /* GDTCORTransformer_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransformer_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h; sourceTree = ""; }; - D6EEBB4DCFC5F2CDD9757AE7A60C7322 /* GPBRootObject_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBRootObject_PackagePrivate.h; path = objectivec/GPBRootObject_PackagePrivate.h; sourceTree = ""; }; - D725AA5DB8EAF50E3E1D18BC0B28C4E5 /* GTLRUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUtilities.m; path = Source/Utilities/GTLRUtilities.m; sourceTree = ""; }; - D7481D3C9BC93CE9F2F7B4BB5A531F1F /* FIRCLSReportUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSReportUploader.m; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.m; sourceTree = ""; }; - D751BFDA01431E2EA4275E69492792BE /* NotificationBannerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NotificationBannerSwift-dummy.m"; sourceTree = ""; }; - D76D908C64B4D3331D7C42333FEFC67D /* FIRApp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRApp.m; path = FirebaseCore/Sources/FIRApp.m; sourceTree = ""; }; - D7C2D469BBB0107E4D57D6A2A0044615 /* Popover-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Popover-prefix.pch"; sourceTree = ""; }; - D87B2986AD1A7E859A4B03964DCBD57C /* FBLPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBLPromise.m; path = Sources/FBLPromises/FBLPromise.m; sourceTree = ""; }; - D891AB31B0E8682029204C9C63F34F96 /* FirebaseMLVision.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseMLVision.xcconfig; sourceTree = ""; }; - D90E947C293E03E312B554FE51E99859 /* GPBExtensionRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBExtensionRegistry.h; path = objectivec/GPBExtensionRegistry.h; sourceTree = ""; }; - D9181362112EE2E5364D786222CFB8C1 /* GTLRVisionService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRVisionService.m; path = Source/GeneratedServices/Vision/GTLRVisionService.m; sourceTree = ""; }; - D9656D73F6326C2C6D091CA637913782 /* GDTCORClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORClock.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h; sourceTree = ""; }; + D1FE78121FD66254B00C9AD2C41C377A /* FirebaseInstallations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstallations.h; path = FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h; sourceTree = ""; }; + D211AAFCFE0A7CB70D07BF3AEC35C3C4 /* GPBStruct.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBStruct.pbobjc.m; path = objectivec/GPBStruct.pbobjc.m; sourceTree = ""; }; + D2531251E4EBBDA1583FF4815745BBF4 /* FirebaseInstanceID.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseInstanceID.modulemap; sourceTree = ""; }; + D27FDC8C66581F6C12A0E72B0DA64D91 /* GULNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetwork.h; path = GoogleUtilities/Network/Private/GULNetwork.h; sourceTree = ""; }; + D29555AB3A177AA112364A787BD17DC0 /* GULReachabilityMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityMessageCode.h; path = GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h; sourceTree = ""; }; + D2D06725A29631194EF95F87DB852FF3 /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugSelectorValidation.h; path = DebugUtils/GTMDebugSelectorValidation.h; sourceTree = ""; }; + D2DD04DD658908470D9230CE21116A32 /* GULReachabilityChecker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULReachabilityChecker.m; path = GoogleUtilities/Reachability/GULReachabilityChecker.m; sourceTree = ""; }; + D308D3D540FF8A98BA5F1DD51462710F /* GDTCORClock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORClock.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORClock.m; sourceTree = ""; }; + D33CF01AA843BFA7781E1B37C2769868 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; + D3CB04CF9D27A14FE20F66B135583E3F /* FIRCLSReportUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportUploader.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.h; sourceTree = ""; }; + D3DFE01BD67E9FE46AA9DA9867ABC699 /* FIRInstanceIDTokenOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.h; sourceTree = ""; }; + D435FF46BAF7B2A3A6F394B2334BC853 /* Cosmos.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Cosmos.xcconfig; sourceTree = ""; }; + D48E4F3BC2703AD574E410736B763CC3 /* GTLRVisionQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRVisionQuery.h; path = Source/GeneratedServices/Vision/GTLRVisionQuery.h; sourceTree = ""; }; + D4A6DA229D9EF8520D1070E7B3D5F583 /* GPBDuration.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBDuration.pbobjc.m; path = objectivec/GPBDuration.pbobjc.m; sourceTree = ""; }; + D53B9AC236D43BF9833DFEFDDB781AF6 /* GoogleUtilities-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleUtilities-Info.plist"; sourceTree = ""; }; + D594AD094BC677312545ACF74D5C97A6 /* FIRCLSDemangleOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDemangleOperation.h; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.h; sourceTree = ""; }; + D5ADFF44C0EF00E26C109DD0EB322106 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + D5BEFDC4ABCCBD0790BCFEE7D78C56D7 /* GTMSessionFetcher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GTMSessionFetcher-Info.plist"; sourceTree = ""; }; + D5C86AB66DA041F43C4AD5F87860595B /* GULSceneDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSceneDelegateSwizzler_Private.h; path = GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h; sourceTree = ""; }; + D661F110E5BEF0775276C4A3A9E0D7E8 /* FBLPromise+Retry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Retry.m"; path = "Sources/FBLPromises/FBLPromise+Retry.m"; sourceTree = ""; }; + D66E2E5FD3C7053DDBE051C293B89875 /* FIRVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVersion.m; path = FirebaseCore/Sources/FIRVersion.m; sourceTree = ""; }; + D6E35806B1ADD32B871A5414B6F458E7 /* GTLRBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBase64.h; path = Source/Utilities/GTLRBase64.h; sourceTree = ""; }; + D6FFB3C98800C56BEA09C6AEFBAB8668 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager.swift; sourceTree = ""; }; + D73D2675D55996A9AD80AB7DEAEAF5B1 /* FIRCLSURLSessionUploadTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionUploadTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionUploadTask.h; sourceTree = ""; }; + D799080C216689B34B4A1EE22D74A86F /* UILoadControl-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-prefix.pch"; sourceTree = ""; }; + D7C76986CA2DCB2EB5BA5CFD2F7AB0E5 /* FIRInstanceIDConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDConstants.h; path = Firebase/InstanceID/FIRInstanceIDConstants.h; sourceTree = ""; }; + D7F714C81BAA8BFC990B197AE6C14F7B /* Protobuf.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Protobuf.xcconfig; sourceTree = ""; }; + D81DA9BEA08FB5F6384AD27158E26032 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = ""; }; + D9086528614205DE38D93BFA4F35A8B2 /* FIRAEvent+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRAEvent+Internal.m"; path = "Crashlytics/Crashlytics/Helpers/FIRAEvent+Internal.m"; sourceTree = ""; }; + D90DE3A990E0795620C3977A6C8B9119 /* FirebaseCoreDiagnostics.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCoreDiagnostics.modulemap; sourceTree = ""; }; + D962B236EEA31FB0727DDE419F2C2518 /* GPBDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBDictionary.m; path = objectivec/GPBDictionary.m; sourceTree = ""; }; + D98F2FDB62DF01198E8ECFEAD4550345 /* StarFillMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StarFillMode.swift; path = Cosmos/StarFillMode.swift; sourceTree = ""; }; + D99AF8387E3CDDEC3C19D94E2E7FEC71 /* FIRCLSMachException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSMachException.h; path = Crashlytics/Crashlytics/Handlers/FIRCLSMachException.h; sourceTree = ""; }; D9A49C45A7778F7F237891638D0C4AE4 /* Pods-FoodScan-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FoodScan-resources.sh"; sourceTree = ""; }; - D9EA85EAD6EE36C001F3E3D2882F9FC7 /* FirebaseInstallations-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseInstallations-Info.plist"; sourceTree = ""; }; - DAC3050D3A50FD45CE5D077A49CEC1EA /* FirebaseCoreDiagnostics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCoreDiagnostics.xcconfig; sourceTree = ""; }; - DB0A649CF81E2DC0D69EE64072D4667F /* SDWebImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoderHelper.h; path = SDWebImage/SDWebImageCoderHelper.h; sourceTree = ""; }; - DB12EEF880A46EB1CA7FD05A685E614C /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = FirebaseCore/Sources/Private/FIRDependency.h; sourceTree = ""; }; - DB7AD804124B790F24E10F9BD067EAF4 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugThreadValidation.h; path = DebugUtils/GTMDebugThreadValidation.h; sourceTree = ""; }; - DB8D2F39D6DB1868D4E759378775FCCD /* GTLRURITemplate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRURITemplate.h; path = Source/Utilities/GTLRURITemplate.h; sourceTree = ""; }; - DBEE2C6BDD7084250BF1F9AE7E48355E /* FIRCLSAsyncOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSAsyncOperation.m; path = Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation.m; sourceTree = ""; }; - DC09C9F7C27FB94CE2433C0685E3567A /* FIRCLSBinaryImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSBinaryImage.h; path = Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.h; sourceTree = ""; }; - DC40D7A7B5515F3005AB72D9B1EE2719 /* GDTCORTargets.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTargets.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h; sourceTree = ""; }; - DC7422611F8ABDA7C28CB5CB40647738 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - DC96ED2FC9F24902F2F7C40DF69AD8CB /* GPBCodedOutputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBCodedOutputStream.m; path = objectivec/GPBCodedOutputStream.m; sourceTree = ""; }; - DCAB042B1642241D956DAA1BF7AE362A /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; - DCD00BDD932672D1A88C3BB8EEEEA3B4 /* FBLPromise+Retry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Retry.m"; path = "Sources/FBLPromises/FBLPromise+Retry.m"; sourceTree = ""; }; - DD4356712EA57454D671CEE4FB4B02AC /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; - DD6C61BAF694527111C893EBBB17D700 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; - DD8BE88C2C0DFDEEBF5851E93710A847 /* CosmosRating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosRating.swift; path = Cosmos/CosmosRating.swift; sourceTree = ""; }; - DDC2CA508D1B6398276A327A4BF926D7 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSDictionary+URLArguments.h"; path = "Foundation/GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; - DDDD86A49B7424EEDDAF144D6ED345B3 /* FIRCLSFABNetworkClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFABNetworkClient.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSFABNetworkClient.m; sourceTree = ""; }; - DDEB45702FD43D8FA986A9CCC98304A9 /* Firebase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Firebase.xcconfig; sourceTree = ""; }; - DE6FDCA53EB858EFFC8785EB41446B50 /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; - DE851F52A9BD6146EBA589A9F2AB0C78 /* firebasecore.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = firebasecore.nanopb.c; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c; sourceTree = ""; }; - DE8BCB8E624614E3040C4F7956D08819 /* FIRInstanceIDAPNSInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAPNSInfo.m; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.m; sourceTree = ""; }; - DFD535381D0BF921CDCFB6383956524C /* FIRCLSURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLSession.m; path = Crashlytics/Crashlytics/FIRCLSURLSession/FIRCLSURLSession.m; sourceTree = ""; }; - DFF28C8D0DA69705F82E9BC162BD6FA9 /* GPBUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUtilities.m; path = objectivec/GPBUtilities.m; sourceTree = ""; }; - E0CDA8B0C54AF79F72989D91CAC407BD /* GTMSessionFetcherService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherService.h; path = Source/GTMSessionFetcherService.h; sourceTree = ""; }; - E0EA302A40B69EDAB2F0FD762F23D907 /* CosmosLayerHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosLayerHelper.swift; path = Cosmos/CosmosLayerHelper.swift; sourceTree = ""; }; - E1E44ADBEC8809E89D6F963CFC9A1191 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; + D9A647508E407F13524D71D613C5A122 /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = FirebaseCore/Sources/Private/FIRComponentContainer.h; sourceTree = ""; }; + D9AD27700FFD6A40E3C40164DA2D3568 /* FIRInstallations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallations.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallations.h; sourceTree = ""; }; + D9C3C096A0FFBFF3540F332698808F53 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; + D9F8E064BFBA8C05C2508A8EA4CB65C5 /* FIRInstanceIDAuthKeyChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthKeyChain.h; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h; sourceTree = ""; }; + DA078DB0720FD674DC4D551E290D0951 /* FIRCLSOnboardingOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSOnboardingOperation.m; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSOnboardingOperation.m; sourceTree = ""; }; + DA51117AA2B7CD75CC823BCCB6DAFBE2 /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = ""; }; + DAB59B2372C23B35627C09287BFAFACA /* FIRCLSReportAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSReportAdapter.m; path = Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.m; sourceTree = ""; }; + DB2BB8C1E60087FB89C2D8281A9EEE25 /* FBLPromise+Reduce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Reduce.h"; path = "Sources/FBLPromises/include/FBLPromise+Reduce.h"; sourceTree = ""; }; + DB2BFA70F9D2B2046A1D26799BD9C725 /* FIRCoreDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsData.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h; sourceTree = ""; }; + DB8525A600833663569668515EE11E1F /* FIRCLSCompactUnwind.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSCompactUnwind.c; path = Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.c; sourceTree = ""; }; + DBA5C21546ADF63E951D040ED31FCC76 /* FIRCLSProcessReportOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSProcessReportOperation.m; path = Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.m; sourceTree = ""; }; + DBC52A9CA0891ED6E4C219182CD35BAA /* GULLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLogger.h; path = GoogleUtilities/Logger/Private/GULLogger.h; sourceTree = ""; }; + DBC9B5B4E2508B3EDB80A64BF097AA84 /* GULNetwork.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetwork.m; path = GoogleUtilities/Network/GULNetwork.m; sourceTree = ""; }; + DBD503B7B689F3BCF4D633D23E769013 /* FIRCLSReport_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReport_Private.h; path = Crashlytics/Crashlytics/Models/FIRCLSReport_Private.h; sourceTree = ""; }; + DBE88F4E616D288AED561D8E32CF76F6 /* FIRInstallationsStoredItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStoredItem.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h; sourceTree = ""; }; + DC16E4F27681F35EEDF46A2DFA567022 /* FBLPromise+Timeout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Timeout.h"; path = "Sources/FBLPromises/include/FBLPromise+Timeout.h"; sourceTree = ""; }; + DC2FDF5233932C4133D24F0B8FBCA41C /* GTLRBatchQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchQuery.h; path = Source/Objects/GTLRBatchQuery.h; sourceTree = ""; }; + DC39B25FAAC0E01533E78ED735D0EFE2 /* FirebaseMLVision.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseMLVision.xcconfig; sourceTree = ""; }; + DC4687D00B3D316451650489A4F72517 /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = ""; }; + DC5DF27D07A485C536A42E827F21FFEA /* GPBRuntimeTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBRuntimeTypes.h; path = objectivec/GPBRuntimeTypes.h; sourceTree = ""; }; + DCA08CD7DFA01DBE6E9601B6C3F0B849 /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = FirebaseCore/Sources/Private/FIRLogger.h; sourceTree = ""; }; + DCACB47FDF1B319F6E056FDD9985654F /* FIRCLSDataParsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDataParsing.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.h; sourceTree = ""; }; + DCD26E805F619E9AFF00D6F8316EF5B0 /* FBLPromisePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromisePrivate.h; path = Sources/FBLPromises/include/FBLPromisePrivate.h; sourceTree = ""; }; + DCF6E8B5148A695EE74ED2CC323747E0 /* FBLPromise+Delay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Delay.h"; path = "Sources/FBLPromises/include/FBLPromise+Delay.h"; sourceTree = ""; }; + DD16ED10136EBA9D6F8A225AA1DF6EDE /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; + DD1FFDC696E79B631C87891210C58B6D /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = ""; }; + DD2DD824D18C00AF1A09FC1D44B5ACF7 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + DD6706FBA0DA32E61A181C8544A2C764 /* FIRCLSLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSLogger.m; path = Crashlytics/Crashlytics/Helpers/FIRCLSLogger.m; sourceTree = ""; }; + DD999AACFF9278F187D89B97853E5A60 /* GULSecureCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSecureCoding.m; path = GoogleUtilities/Environment/GULSecureCoding.m; sourceTree = ""; }; + DE4B3BB5175D01156AAA692EF3ADE151 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; + DE676C20BA5E8E2F0645FD42523B4125 /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = FirebaseCore/Sources/Private/FIRLogger.h; sourceTree = ""; }; + DE8215F2A8C9100A42FF778E2A976B62 /* FIROptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptions.h; path = FirebaseCore/Sources/Public/FIROptions.h; sourceTree = ""; }; + DEE36801554FC77D8625D038620A70CA /* GULKeychainUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULKeychainUtils.m; path = GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m; sourceTree = ""; }; + DEF96F0A1A95E52441306AB6C23338AD /* GPBUnknownFieldSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownFieldSet.h; path = objectivec/GPBUnknownFieldSet.h; sourceTree = ""; }; + DF275FD8171E77E18A2ACFADB2C28C1A /* FirebaseInstanceID-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstanceID-dummy.m"; sourceTree = ""; }; + E06F827CC2D41CCC101F3D4DAC2EFD31 /* Protobuf-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Protobuf-prefix.pch"; sourceTree = ""; }; + E0742B185471D0220647A822BD83C141 /* FIRCLSContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSContext.h; path = Crashlytics/Crashlytics/Components/FIRCLSContext.h; sourceTree = ""; }; + E0CA20C4BF19FEE4415BAB65031ED0F1 /* FIRInstanceID+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceID+Private.m"; path = "Firebase/InstanceID/FIRInstanceID+Private.m"; sourceTree = ""; }; + E0E3B79FB416677F192AD6676762E387 /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = FirebaseCore/Sources/Private/FIRComponent.h; sourceTree = ""; }; + E11889F61BF54A7543863C9CA7472057 /* GTLRBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBase64.m; path = Source/Utilities/GTLRBase64.m; sourceTree = ""; }; + E121B6259D75B3FE67BDCA16B0F47EFB /* CosmosAccessibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosAccessibility.swift; path = Cosmos/CosmosAccessibility.swift; sourceTree = ""; }; + E12461453BE9CE51FDB5DF143433B64C /* FIRApp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRApp.h; path = FirebaseCore/Sources/Public/FIRApp.h; sourceTree = ""; }; + E1493227AE7C34FD02E174319B19B6A4 /* GULNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GULNSData+zlib.m"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.m"; sourceTree = ""; }; + E15836C6C0A7AA69F0A8B4C5EBE84C83 /* GDTCORDataFuture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORDataFuture.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORDataFuture.h; sourceTree = ""; }; + E1C979B5B1B6F24F31C10B3A2DE7FB92 /* FIRCLSDwarfUnwindRegisters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDwarfUnwindRegisters.h; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwindRegisters.h; sourceTree = ""; }; + E1D1E1875CE4F9426544E6F7895B152B /* CosmosLayers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosLayers.swift; path = Cosmos/CosmosLayers.swift; sourceTree = ""; }; E23C076BA70925415F490FEDB215DA92 /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftyJSON.framework; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E26AFD0FAC32D54175BBA636BE6790C7 /* UILoadControl_UIScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UILoadControl_UIScrollView.swift; path = Pod/Classes/UILoadControl_UIScrollView.swift; sourceTree = ""; }; - E29863F377F20E0CFC8174915A3F71BC /* FIRCLSCrashedMarkerFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCrashedMarkerFile.h; path = Crashlytics/Crashlytics/Components/FIRCLSCrashedMarkerFile.h; sourceTree = ""; }; - E29B37DDF6917885E71EC92D9471EA0C /* GPBBootstrap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBBootstrap.h; path = objectivec/GPBBootstrap.h; sourceTree = ""; }; + E2974F80DFEBFA5B672E70DE29E3A817 /* FIRInstanceIDUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDUtilities.h; path = Firebase/InstanceID/FIRInstanceIDUtilities.h; sourceTree = ""; }; E2B63D462DB7F827C4B11FD51E4F8E2D /* FirebaseCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FirebaseCore.framework; path = FirebaseCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E362774F34E9BD34184C08EA8DD1BB46 /* Popover-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Popover-dummy.m"; sourceTree = ""; }; - E3B91EAE51685CB45E88B699BF67DE9B /* GDTCORLifecycle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORLifecycle.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h; sourceTree = ""; }; - E3D0FD0855800AB4A51D8CADE23CAD1C /* FIRInstallationsItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsItem.h; path = FirebaseInstallations/Source/Library/FIRInstallationsItem.h; sourceTree = ""; }; - E3D44D9B9B1992DF3B506E22E3A7FAB9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - E3E5DF82558B6C423EA12FD57C8AEFAA /* FIRCLSSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSettings.h; path = Crashlytics/Crashlytics/Models/FIRCLSSettings.h; sourceTree = ""; }; - E50F7E52D14FD089EBB57FD2C137153B /* GTMNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSData+zlib.h"; path = "Foundation/GTMNSData+zlib.h"; sourceTree = ""; }; - E6DB457207A5CFDF08C5976DFDC7643C /* GPBUtilities_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUtilities_PackagePrivate.h; path = objectivec/GPBUtilities_PackagePrivate.h; sourceTree = ""; }; - E6FEE0247C04AB1CFED53E4C9A392EBD /* FIRCLSDwarfExpressionMachine.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDwarfExpressionMachine.c; path = Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfExpressionMachine.c; sourceTree = ""; }; - E74FA48FF9B5D7B5326FBB5156805570 /* FirebaseInstallations.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseInstallations.modulemap; sourceTree = ""; }; - E7E6F6E349AA71C63CE81C7BB121C13B /* FIRCoreDiagnostics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnostics.m; path = Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m; sourceTree = ""; }; + E3D2382BEDB9915DD87E32A0F8EF5D38 /* FirebaseAnalytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAnalytics.xcconfig; sourceTree = ""; }; + E44F3444E3ADC3C5862E1BF3F7A510E0 /* GTMLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMLogger.m; path = Foundation/GTMLogger.m; sourceTree = ""; }; + E45425CA794044E1EA7DEABEA6351928 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = ""; }; + E49D3759D45C371B9AA48D01BA38D835 /* PromisesObjC.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromisesObjC.modulemap; sourceTree = ""; }; + E4C174D5D686676E2599C18573BF84F8 /* dwarf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dwarf.h; path = Crashlytics/third_party/libunwind/dwarf.h; sourceTree = ""; }; + E4E75305D4960C8E952FBE47ECD582E1 /* GULSecureCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSecureCoding.h; path = GoogleUtilities/Environment/Public/GULSecureCoding.h; sourceTree = ""; }; + E5BB360882D1E8097C2B99C4F7BAFD89 /* FBLPromise+Async.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Async.h"; path = "Sources/FBLPromises/include/FBLPromise+Async.h"; sourceTree = ""; }; + E5C3202E468FAC0374262B50DB0CEE0D /* FIRCLSCompactUnwind_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCompactUnwind_Private.h; path = Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind_Private.h; sourceTree = ""; }; + E5CACEAFB90B8CE50E00CD9509579CBD /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = FirebaseCore/Sources/Private/FIRLibrary.h; sourceTree = ""; }; + E5DA0BBC9268CE131BF23F7FC770D010 /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = ""; }; + E61A190AD0C18E12D2BFC70E264C3DED /* FIRConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRConfiguration.m; path = FirebaseCore/Sources/FIRConfiguration.m; sourceTree = ""; }; + E62CC748304CE4C0BC87F3AC7568E827 /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = FirebaseCore/Sources/Private/FIROptionsInternal.h; sourceTree = ""; }; + E6747620919AD62D6CC376A5FCBD7EA6 /* GPBProtocolBuffers_RuntimeSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBProtocolBuffers_RuntimeSupport.h; path = objectivec/GPBProtocolBuffers_RuntimeSupport.h; sourceTree = ""; }; + E6CB2FE9A73574FB566DDFC4976EAC0C /* FBLPromise+Any.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Any.m"; path = "Sources/FBLPromises/FBLPromise+Any.m"; sourceTree = ""; }; + E729F5DD5D92CC666229A08FEC639219 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + E72CF57FB522BD8CD0392B10511DF1E2 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; + E7369BEBFDA8591DEEB97B85CCA96213 /* FIRCLSMachOBinary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSMachOBinary.m; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOBinary.m; sourceTree = ""; }; + E7BBFE8A8EC00F03F85CD1CE0470D6AB /* FIRCLSURLBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSURLBuilder.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSURLBuilder.m; sourceTree = ""; }; + E7BE7E52F9753DF02532199A1ED22365 /* GDTCORReachability_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORReachability_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h; sourceTree = ""; }; + E801717D20A5DEA230B9BD043045FA27 /* FirebaseCoreDiagnostics-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FirebaseCoreDiagnostics-umbrella.h"; sourceTree = ""; }; + E821DF662710A7BA50E2390C820C8913 /* Firebase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Firebase.xcconfig; sourceTree = ""; }; E894BD4292F2D0A675B34391C486FC13 /* Pods-FoodScanUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FoodScanUITests.modulemap"; sourceTree = ""; }; - E8997CAC5DDD62C8F198C85783A5C015 /* GDTCORTransport_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransport_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h; sourceTree = ""; }; - E8CF2A9FE2D0DA1A690F5941F2AF780F /* GoogleDataTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GoogleDataTransport.h; path = GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h; sourceTree = ""; }; - E8DF70D5F2538FD3C8E43DBF5A3A985B /* GDTCCTPrioritizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTPrioritizer.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m; sourceTree = ""; }; - E93E7764D0B63DD82D2F83AD79F7D75D /* FIRCLSSettings.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSSettings.m; path = Crashlytics/Crashlytics/Models/FIRCLSSettings.m; sourceTree = ""; }; - E95CFCFAD175E6DEC1D62F7FA42C9349 /* FirebaseCoreDiagnostics.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseCoreDiagnostics.modulemap; sourceTree = ""; }; - EA2CE876547BAF9E77462B6D141B9B98 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = ""; }; - EA44B8091E855FDD1C920BB1AF6A20EB /* FIRCLSFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFile.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSFile.h; sourceTree = ""; }; - EA860384F140B3E312803E8D8A0F8719 /* FIRInstallationsStoredAuthToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStoredAuthToken.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m; sourceTree = ""; }; - EAACB773CC8F7C58C17AAA8BFF53C048 /* GDTCORStoredEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORStoredEvent.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h; sourceTree = ""; }; - EB03799D2358C108110A9C16A00E603E /* GoogleToolboxForMac-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleToolboxForMac-Info.plist"; sourceTree = ""; }; - EBFFD004BF4761F5EC96E36BDAB5AA30 /* CosmosSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosSettings.swift; path = Cosmos/CosmosSettings.swift; sourceTree = ""; }; - EC0C9F37619C09DCD1A68B50C27DDB7C /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; - EC5261206A9B4D04304FC7EC5F793D66 /* GPBDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBDescriptor.m; path = objectivec/GPBDescriptor.m; sourceTree = ""; }; - ECB98717847274411B1A41291CEB07A0 /* GTMSessionUploadFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionUploadFetcher.m; path = Source/GTMSessionUploadFetcher.m; sourceTree = ""; }; - ECD595F38C65873191A7F279C7C31DF6 /* GTLRVisionQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRVisionQuery.m; path = Source/GeneratedServices/Vision/GTLRVisionQuery.m; sourceTree = ""; }; - ED96643CC58AE148B6526496B00AC53E /* MarqueeLabel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MarqueeLabel.modulemap; sourceTree = ""; }; - EE6D4B35CA081002AD738441F91EBD92 /* GoogleUtilities.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleUtilities.modulemap; sourceTree = ""; }; + E89DBE92A982BFF6BFBA0712FB5F744F /* FIRHeartbeatInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRHeartbeatInfo.h; path = FirebaseCore/Sources/Private/FIRHeartbeatInfo.h; sourceTree = ""; }; + E901C07F21ACCFFBBCC8DFF7C1FD5BCA /* FIRExceptionModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRExceptionModel.h; path = Crashlytics/Crashlytics/Public/FIRExceptionModel.h; sourceTree = ""; }; + E9375E5A51A18FCE3FDFFE4FD030CC84 /* FIRAnalyticsConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsConfiguration.h; path = FirebaseCore/Sources/FIRAnalyticsConfiguration.h; sourceTree = ""; }; + E983CD6F7A6DBB1038852CD5552A0B30 /* FIRInstallationsAuthTokenResultInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAuthTokenResultInternal.h; path = FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h; sourceTree = ""; }; + E9B908472FE2E8E544F3434D3EC0B3B2 /* FirebaseInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstanceID.h; path = Firebase/InstanceID/Public/FirebaseInstanceID.h; sourceTree = ""; }; + E9C4659E4DFE14EF5F9A7DBF5C11DA3E /* GPBDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDescriptor.h; path = objectivec/GPBDescriptor.h; sourceTree = ""; }; + EAB757D2163E4938ED01A06AF2CCB4C2 /* FIRAnalyticsConnector.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FIRAnalyticsConnector.framework; path = Frameworks/FIRAnalyticsConnector.framework; sourceTree = ""; }; + EB1DFEEE962A97F257986F5D6F7BFBE5 /* GULAppDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppDelegateSwizzler.m; path = GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m; sourceTree = ""; }; + EB6FC82990F5DD4E4655A312F2D761A3 /* GTLRService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRService.m; path = Source/Objects/GTLRService.m; sourceTree = ""; }; + EBA4D4107A93B48E82A9FFFFFF64A30C /* GTLRDateTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDateTime.h; path = Source/Objects/GTLRDateTime.h; sourceTree = ""; }; + EBB14DF59129E25719E5AEA564CA1ED2 /* FIRInstanceIDKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeychain.m; path = Firebase/InstanceID/FIRInstanceIDKeychain.m; sourceTree = ""; }; + EC3135574184F3D54A42A98CD5424777 /* GPBWellKnownTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBWellKnownTypes.h; path = objectivec/GPBWellKnownTypes.h; sourceTree = ""; }; + EC42A2D8DA964A04C23B6C2CEF22BB06 /* MarqueeLabel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MarqueeLabel-umbrella.h"; sourceTree = ""; }; + ED38CBC820EE0C6A79CE9C239EB2E916 /* GoogleDataTransportCCTSupport-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleDataTransportCCTSupport-umbrella.h"; sourceTree = ""; }; + ED4DBB5FEAA4E13E12D055123506340A /* FirebaseInstanceID-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FirebaseInstanceID-Info.plist"; sourceTree = ""; }; + ED9ED272E5C44F9CEDB513CA53E70C0B /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/UIImage+ForceDecode.h"; sourceTree = ""; }; + EE6521A394E8262D5CD205F34D6AE4EC /* FIRCLSDownloadAndSaveSettingsOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDownloadAndSaveSettingsOperation.h; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSDownloadAndSaveSettingsOperation.h; sourceTree = ""; }; + EE7193FF0595F3EE2D48FF0B9BC086C7 /* FIRCLSCompoundOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSCompoundOperation.m; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSCompoundOperation.m; sourceTree = ""; }; EE71B2AB6C5C0D8BCDB03BB62E2D6B21 /* Pods-FoodScan-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoodScan-Info.plist"; sourceTree = ""; }; - EFC66B7E4950AA8895BF5A9BD3B0125D /* FIRInstanceIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStore.h; path = Firebase/InstanceID/FIRInstanceIDStore.h; sourceTree = ""; }; - EFDEA1E617338F534B47C46BD1B16AAC /* FIRCLSURLSessionUploadTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionUploadTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionUploadTask.h; sourceTree = ""; }; - EFF838BA3C5FDEBC9CF2F0C570B06F68 /* BannerColors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerColors.swift; path = NotificationBanner/Classes/BannerColors.swift; sourceTree = ""; }; - F0127120A30E5ACF0148FE48F690DC1D /* GPBUnknownFieldSet_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownFieldSet_PackagePrivate.h; path = objectivec/GPBUnknownFieldSet_PackagePrivate.h; sourceTree = ""; }; - F026413B1C3605032FD6AE49213C1BBC /* Empty.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Empty.pbobjc.m; path = objectivec/google/protobuf/Empty.pbobjc.m; sourceTree = ""; }; - F064649FD24DA580E8F889A62CAA27DC /* FBLPromise+Recover.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Recover.m"; path = "Sources/FBLPromises/FBLPromise+Recover.m"; sourceTree = ""; }; - F0665F90052BC6A53FECC6EA32D442B0 /* GPBDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDictionary.h; path = objectivec/GPBDictionary.h; sourceTree = ""; }; - F0703C01EECAD452AA742A4D9B5E11AD /* FirebaseCoreDiagnostics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCoreDiagnostics-dummy.m"; sourceTree = ""; }; - F0D2D4B878E192ECDA911312F1436ECF /* UILoadControl-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-umbrella.h"; sourceTree = ""; }; - F110E5D5A1E15B6038114DC225EF15F6 /* FIRCLSSettingsOnboardingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSSettingsOnboardingManager.h; path = Crashlytics/Crashlytics/Settings/FIRCLSSettingsOnboardingManager.h; sourceTree = ""; }; - F13C1B8CB53691E6EF4DB57E19D99531 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager.swift; sourceTree = ""; }; - F208CAEE91004371B622765C2EE44B90 /* FirebaseInstallations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstallations.h; path = FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h; sourceTree = ""; }; - F286D0CF9D2BB9280500D0BEF371437D /* FIRCLSApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSApplication.h; path = Crashlytics/Crashlytics/Components/FIRCLSApplication.h; sourceTree = ""; }; - F2A86CEF89DA5A288FC9BFD66702A3EB /* FIRCrashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCrashlytics.h; path = Crashlytics/Crashlytics/Public/FIRCrashlytics.h; sourceTree = ""; }; - F2BBF2BDEFECA1B1716B882317510C6A /* FIRCLSThreadArrayOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSThreadArrayOperation.m; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.m; sourceTree = ""; }; - F2BBF9E09711C1A7DCADDB80E1CE945D /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = FirebaseCore/Sources/Private/FIRComponent.h; sourceTree = ""; }; - F2D583D297D3BFBB8DFF2B8FC57CF055 /* SDWebImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoderHelper.m; path = SDWebImage/SDWebImageCoderHelper.m; sourceTree = ""; }; - F33847DEA2A9C88EA42F0F06E7A868E5 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; - F3571D337FA63EAE0F31442C9BBEED81 /* GDTCCTCompressionHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTCompressionHelper.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTCompressionHelper.m; sourceTree = ""; }; - F3B885D3937628B2E4E09FA2AF0AD2ED /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/UIImage+ForceDecode.m"; sourceTree = ""; }; + EEEEC8052BAD16EFB327F0E0769A8DFE /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + EF5ECBC562B1FDF4618625BAC4A94EA9 /* GTMReadMonitorInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMReadMonitorInputStream.h; path = Source/GTMReadMonitorInputStream.h; sourceTree = ""; }; + EFA3424CBDF3DC062C59A533A9AD3640 /* GDTCOREventTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREventTransformer.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h; sourceTree = ""; }; + EFA982327ACFB64AD0CA803FCC2C468A /* CosmosTouchTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosTouchTarget.swift; path = Cosmos/Helpers/CosmosTouchTarget.swift; sourceTree = ""; }; + F021AD5A740ADB4A289B409D92D0C745 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; + F092267703387DA58E11466115123BD5 /* GPBCodedInputStream_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedInputStream_PackagePrivate.h; path = objectivec/GPBCodedInputStream_PackagePrivate.h; sourceTree = ""; }; + F09A3296168934638F64B46CF41995B9 /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = FirebaseCore/Sources/Private/FIRErrorCode.h; sourceTree = ""; }; + F10A01C368ACAD36B7BAE12E008E1DC5 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSString+URLArguments.m"; path = "Foundation/GTMNSString+URLArguments.m"; sourceTree = ""; }; + F10D9C257882F584708DEA43803FE56A /* GTLRDuration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDuration.h; path = Source/Objects/GTLRDuration.h; sourceTree = ""; }; + F12E2DA40E999C9F23665847A72D9499 /* FirebaseCrashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCrashlytics.h; path = Crashlytics/Crashlytics/Public/FirebaseCrashlytics.h; sourceTree = ""; }; + F154B7AC3C124E7A2107A0B11EC1BFA5 /* FIRInstallationsItem+RegisterInstallationAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstallationsItem+RegisterInstallationAPI.h"; path = "FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h"; sourceTree = ""; }; + F164DF0E7AC44316CDBA4A163407EA66 /* FIRCLSAsyncOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSAsyncOperation_Private.h; path = Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation_Private.h; sourceTree = ""; }; + F2023A98042AEF1DBD90E8C2EF24E975 /* FIRCLSReportManager_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSReportManager_Private.h; path = Crashlytics/Crashlytics/Controllers/FIRCLSReportManager_Private.h; sourceTree = ""; }; + F241E619955DB49734117035F5C322F7 /* NSError+FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+FIRInstanceID.h"; path = "Firebase/InstanceID/NSError+FIRInstanceID.h"; sourceTree = ""; }; + F2867A2497AD088799DFEE361ACDEFC2 /* SDWebImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageFrame.h; path = SDWebImage/SDWebImageFrame.h; sourceTree = ""; }; + F2C2B649E995CFB460ADE39730713BF7 /* FIRCLSUnwind.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUnwind.h; path = Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.h; sourceTree = ""; }; + F2D3FDAC6E35E3A4A60DACE6A7444117 /* FIRCLSFABNetworkClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABNetworkClient.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSFABNetworkClient.h; sourceTree = ""; }; + F2E0FCBF4DD92E8481E3D1C0489DAF55 /* firebasecore.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = firebasecore.nanopb.c; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c; sourceTree = ""; }; + F2F671EF359514344110E1A6C6513F5D /* GDTCORPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORPlatform.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h; sourceTree = ""; }; + F34DB17D07BB8C151D0A0516BE6D1E34 /* FIRCLSDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSDefines.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSDefines.h; sourceTree = ""; }; F3BC53663530C402033E24E3E2C37349 /* Pods-FoodScan-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FoodScan-umbrella.h"; sourceTree = ""; }; - F46454C95FB03CAD1BA706961BE72319 /* NotificationBannerQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationBannerQueue.swift; path = NotificationBanner/Classes/NotificationBannerQueue.swift; sourceTree = ""; }; - F54532B094D38025D8B8B1A42EDE2C41 /* FIRCLSInstallIdentifierModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSInstallIdentifierModel.h; path = Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.h; sourceTree = ""; }; - F54665FE0ACB0A881732FA8D8A4A16A2 /* GDTCCTNanopbHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTNanopbHelpers.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h; sourceTree = ""; }; + F3FD421B015E2E19354E67775DAB53BC /* FIRCLSUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUserDefaults.m; path = Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.m; sourceTree = ""; }; + F451E7C07367BCE2D34E10AEC4F600FC /* FirebaseCoreInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCoreInternal.h; path = FirebaseCore/Sources/Private/FirebaseCoreInternal.h; sourceTree = ""; }; + F460FA308E7A4680AF1A2F1728D34CA7 /* FIRCLSFABAsyncOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABAsyncOperation.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation.h; sourceTree = ""; }; + F465778F3F0D0FC55AB567D52E7D49F4 /* BannerHapticGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerHapticGenerator.swift; path = NotificationBanner/Classes/BannerHapticGenerator.swift; sourceTree = ""; }; + F4B5C744CDABC8A69C37AEF69D393C69 /* BannerStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BannerStyle.swift; path = NotificationBanner/Classes/BannerStyle.swift; sourceTree = ""; }; + F4CA697BAFD1761A238586D41040E570 /* GTLRErrorObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRErrorObject.h; path = Source/Objects/GTLRErrorObject.h; sourceTree = ""; }; + F4D4096BBEFEBADF4261F083F8AA85F2 /* GoogleDataTransportCCTSupport-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GoogleDataTransportCCTSupport-Info.plist"; sourceTree = ""; }; + F4D7D07D3755EECAFC2BA94C4C7C410B /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = FirebaseCore/Sources/Private/FIRDependency.h; sourceTree = ""; }; + F51CD44B97224A5D9DD556F8B4D186BE /* Protobuf.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Protobuf.modulemap; sourceTree = ""; }; + F5299AF67E4B99F986EEAC776BFCC7E3 /* GTLRService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRService.h; path = Source/Objects/GTLRService.h; sourceTree = ""; }; F54A3C504AE7A4C6C1953576C5D40F56 /* UILoadControl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = UILoadControl.framework; path = UILoadControl.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F5583FD8431259BBBFC4A0FD717C024F /* GTMSessionFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcher.h; path = Source/GTMSessionFetcher.h; sourceTree = ""; }; - F59F320403A7F3B89B38810E1276A05B /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/SDWebImageTransition.m; sourceTree = ""; }; - F5FEC5F6547065D280C86B68BDD1F031 /* FIRCLSURLBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLBuilder.h; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSURLBuilder.h; sourceTree = ""; }; - F623A14595B84524A34B7A9B47316B01 /* FIRCLSNetworkOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSNetworkOperation.h; path = Crashlytics/Crashlytics/Settings/Operations/FIRCLSNetworkOperation.h; sourceTree = ""; }; - F72451FF952AA4FB1296780F830175D8 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; - F726D7F9E6E241F7E3C2B91E106EB38E /* FIRInstallationsIIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIIDTokenStore.m; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m; sourceTree = ""; }; - F7F34E4CD48A7AB9B65B6708052AFD9F /* FIRCLSURLSessionDataTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSURLSessionDataTask.h; path = Crashlytics/Crashlytics/FIRCLSURLSession/Tasks/FIRCLSURLSessionDataTask.h; sourceTree = ""; }; - F87675A0A7691C6FE3B72DDF14BC11C8 /* FIRAValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAValue.h; path = Crashlytics/Crashlytics/Helpers/FIRAValue.h; sourceTree = ""; }; - F8A26D3D295BBE1478C6D5C201C38A3E /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; - F96127A7EB0FF0D4ABACDC5F0D7840CF /* FIRCLSCodeMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCodeMapping.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSCodeMapping.h; sourceTree = ""; }; - F99824C3555A8D7E59614043711BCD95 /* FIRCLSUUID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSUUID.m; path = Crashlytics/Shared/FIRCLSUUID.m; sourceTree = ""; }; - F9E4F242BD62C6BD267D0FB347EB4F90 /* FIRInstanceIDCheckinService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinService.h; path = Firebase/InstanceID/FIRInstanceIDCheckinService.h; sourceTree = ""; }; - FA18453B63005E07890312140519F7AF /* GPBMessage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBMessage.h; path = objectivec/GPBMessage.h; sourceTree = ""; }; - FA646A6AE440903CCA45526069627326 /* FIRCLSFileManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFileManager.m; path = Crashlytics/Crashlytics/Models/FIRCLSFileManager.m; sourceTree = ""; }; - FAB696988313D265F058AF3ECE177B1C /* CosmosAccessibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosAccessibility.swift; path = Cosmos/CosmosAccessibility.swift; sourceTree = ""; }; - FB0B320DFE9149A67E2111C9C7A38343 /* FIRCLSInternalLogging.c */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSInternalLogging.c; path = Crashlytics/Crashlytics/Helpers/FIRCLSInternalLogging.c; sourceTree = ""; }; - FB54E63AA18E891CCE274EA40ADC5661 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyJSON.modulemap; sourceTree = ""; }; - FBCECCBC1BDF1CEBC8958F88D94A64AD /* FirebaseInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstanceID.h; path = Firebase/InstanceID/Public/FirebaseInstanceID.h; sourceTree = ""; }; - FBE0AE80E62348D84533CA43FAFF7133 /* FIRInstanceIDAPNSInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAPNSInfo.h; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.h; sourceTree = ""; }; - FC0D4D8BD8938BF448EFFE673E9B0E2F /* CosmosView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CosmosView.swift; path = Cosmos/CosmosView.swift; sourceTree = ""; }; - FC3286B48C379120ED10D39109683F3A /* FIRInstanceIDTokenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenManager.m; path = Firebase/InstanceID/FIRInstanceIDTokenManager.m; sourceTree = ""; }; - FC847D7DB0EDA275068FA9AB945E80E4 /* FIRCLSDemangleOperation.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = FIRCLSDemangleOperation.mm; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.mm; sourceTree = ""; }; - FCED56686462EC9815FE5557B90FC526 /* GDTCORUploadPackage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORUploadPackage.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m; sourceTree = ""; }; - FCF9FE949C25BF907987EC9135AF6859 /* FBLPromise+All.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+All.h"; path = "Sources/FBLPromises/include/FBLPromise+All.h"; sourceTree = ""; }; - FD1A4B810B85D7D5CC86D2DE1E18B869 /* FIRInstanceIDVersionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDVersionUtilities.m; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.m; sourceTree = ""; }; + F59C252750FD6059166EEF6BF3260FED /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; + F605381737E52A42E07DB59E9D132497 /* FIRCLSFABNetworkClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSFABNetworkClient.m; path = Crashlytics/Shared/FIRCLSNetworking/FIRCLSFABNetworkClient.m; sourceTree = ""; }; + F658D9B69151585486B168D715F0D0D9 /* FIRCLSUserDefaults_private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUserDefaults_private.h; path = Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults_private.h; sourceTree = ""; }; + F668B38444CB840584F0F6793CCC9783 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; + F670E83C6CB2B67137E070B3D0C25512 /* crashlytics.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crashlytics.nanopb.h; path = Crashlytics/Protogen/nanopb/crashlytics.nanopb.h; sourceTree = ""; }; + F6733B8AD09ED4F227B9AB96E553FAD6 /* GDTCORTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransformer.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h; sourceTree = ""; }; + F6BC1647CFCDEF84F23D2829ED9815D6 /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = FirebaseCore/Sources/Private/FIRErrors.h; sourceTree = ""; }; + F6D60C2B48096DA88FF81E3B107E7586 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; + F7513CF33C759FCF94FE6E009EE608CC /* GTLRVisionQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRVisionQuery.m; path = Source/GeneratedServices/Vision/GTLRVisionQuery.m; sourceTree = ""; }; + F790367FEB9B9A0FE4644F5091D61BF9 /* GPBProtocolBuffers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBProtocolBuffers.h; path = objectivec/GPBProtocolBuffers.h; sourceTree = ""; }; + F7F27F5DD83CA67CC41FC0A02B14D98D /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = ""; }; + F86913BE9E5990C8A247454C6FD92952 /* GDTCORTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransport.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h; sourceTree = ""; }; + F8D98E690A13704A526738272D44B4FA /* FIRVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVersion.h; path = FirebaseCore/Sources/FIRVersion.h; sourceTree = ""; }; + F8DFAE3961EC1EB6B68B23AA000008F9 /* GDTCORUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploader.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h; sourceTree = ""; }; + F90C0E0E765BA40F1C6BE4BC4D59BA6D /* FIRCLSThreadArrayOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCLSThreadArrayOperation.m; path = Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.m; sourceTree = ""; }; + F964152A57EF9726875C6BCB81E63273 /* FIRCLSCompoundOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSCompoundOperation.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSCompoundOperation.h; sourceTree = ""; }; + F98DE858E02A9156BA57D87690B28A1E /* FIRCLSFABAsyncOperation_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSFABAsyncOperation_Private.h; path = Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation_Private.h; sourceTree = ""; }; + FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + FA38C8E3E480D656319A79F633FD29D3 /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = FirebaseCore/Sources/Private/FIRErrorCode.h; sourceTree = ""; }; + FA3FFD80553357328CEF5DA8770AA84A /* FIRCLSdSYM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSdSYM.h; path = Crashlytics/Shared/FIRCLSMachO/FIRCLSdSYM.h; sourceTree = ""; }; + FA74F102D0437705B1B20EDCAD15A673 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + FADDF66918009AB6EF57D016455E3AC6 /* GTMSessionFetcher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GTMSessionFetcher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FAF15C4C71AE6A1D77DA796CC6215286 /* StatusBarNotificationBanner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusBarNotificationBanner.swift; path = NotificationBanner/Classes/StatusBarNotificationBanner.swift; sourceTree = ""; }; + FB7B7D1AA9ECAD705F3D1103AC4DE86E /* FIRInstallationsStoredItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStoredItem.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m; sourceTree = ""; }; + FBB15BAECDA92DF1BDA47EDE53A6E736 /* FIRInstanceIDCheckinPreferences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinPreferences.m; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.m; sourceTree = ""; }; + FBDD7A7DE14EEBF98608CA1B8E696BCB /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + FC32619D35801DD196B84F6E426924B0 /* GoogleToolboxForMac.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleToolboxForMac.modulemap; sourceTree = ""; }; + FC38F2F91A70E7303B5FD64627CFA66A /* FIRCLSUUID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSUUID.h; path = Crashlytics/Shared/FIRCLSUUID.h; sourceTree = ""; }; + FCA3A9B67E505A3E07A808F66562CB4D /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; + FCD00C1A1990994AF5696D9F392C070E /* FIRAnalyticsInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsInterop.h; path = Interop/Analytics/Public/FIRAnalyticsInterop.h; sourceTree = ""; }; + FCDD0289C506918952123492F6B43E34 /* GPBUnknownField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownField.h; path = objectivec/GPBUnknownField.h; sourceTree = ""; }; + FCFCD65F9FCF18875443EB66BCF3C6D2 /* NotificationBannerSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NotificationBannerSwift.xcconfig; sourceTree = ""; }; FD519882861480B93B563B477CE1FA29 /* GoogleAPIClientForREST.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GoogleAPIClientForREST.framework; path = GoogleAPIClientForREST.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FD73CD3CCC3045D3727682E43D99ACA1 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = FirebaseCore/Sources/Private/FIRLibrary.h; sourceTree = ""; }; - FDC150CC824B5CA3690BA00BBAC7ABCA /* FirebaseInstanceID.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FirebaseInstanceID.modulemap; sourceTree = ""; }; - FF52E871BD37790734EC0BFB570A1CCD /* FIRInstanceIDTokenOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.m; sourceTree = ""; }; - FF6E8D7150F767DB43AE4F899E9C9F7A /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/UIView+WebCache.h"; sourceTree = ""; }; + FD588FEA8E1E81C7A65560C9E619A80B /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; + FD84F1C93B89CE0A89CF4CE2266B99ED /* GDTCCTNanopbHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTNanopbHelpers.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h; sourceTree = ""; }; + FD96061CC20B830F6CE26A7F76EB1B9C /* FIRComponentContainerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainerInternal.h; path = FirebaseCore/Sources/FIRComponentContainerInternal.h; sourceTree = ""; }; + FDD02CC9A45B0899E205C6161422A9B1 /* FirebaseMLCommon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseMLCommon.framework; path = Frameworks/FirebaseMLCommon.framework; sourceTree = ""; }; + FE39F4B25F3D27D7AD4DA7C2EFE25A35 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/SDImageCacheConfig.m; sourceTree = ""; }; + FE5829F652962087767A854A3418F239 /* FirebaseMLCommon.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseMLCommon.xcconfig; sourceTree = ""; }; + FF68EE9F1710002EA3C64F514C95AFE9 /* GDTCCTUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTUploader.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m; sourceTree = ""; }; + FF72499E8A41B9F454630A3894279346 /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = ""; }; + FFDC670F97F91FE9EA4D985EB6804715 /* FIRCLSProfiling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCLSProfiling.h; path = Crashlytics/Crashlytics/Helpers/FIRCLSProfiling.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 002795D51F540FD2E724C25053B69CEA /* Frameworks */ = { + 062C331594B0380D38D495F3ABE969E4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A9E33EB0E361731A2D8B17F29DB1BDAF /* Foundation.framework in Frameworks */, + DDD70BF51133CC18C0452E2CF114CFD2 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2399,43 +2676,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 11C9171A626A0DA921D6B099BA41C223 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E0CFA85336E992B0C8052FEA7BBFA675 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 16D55F2C2A27E85A4CF70EAB249CD87E /* Frameworks */ = { + 1A0FE7EA2D6567C56A776C0FAB04BEBC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3D68C0662AC8C858E10EA62B627DB749 /* Foundation.framework in Frameworks */, + 3ABDABBA9DED4143B735540EF8800CDE /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1A0FE7EA2D6567C56A776C0FAB04BEBC /* Frameworks */ = { + 244AE45330492B29309D82C86D1E1A14 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3ABDABBA9DED4143B735540EF8800CDE /* Foundation.framework in Frameworks */, + 386C203C52E064767CF92089D4C94844 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 273CB2E10009D287C9CB8C6805CAEE82 /* Frameworks */ = { + 3A7029A911C9423E765CF1C7FF89E980 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7F7959F9F2F9ABCFE6B70A716F483BB9 /* Foundation.framework in Frameworks */, + D40ADF2616E3B5689EAE97508AA74EAB /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 319C5F9BFC2766843668895937ABE123 /* Frameworks */ = { + 41DACCA91CE935BB8D73C48F4A8AF0EB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B36F11C76D7E51714FDD9BC0123D777D /* Foundation.framework in Frameworks */, + F82A1FC0CF0F249DAA064DDA8EE5D019 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2449,11 +2718,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 44B6A3CB88986B01732E1E57E10CBEF3 /* Frameworks */ = { + 4E84FD41B0BEEFCBA02FABE85A5CA9CF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E8D052EDADA85B93F605F2A8C5B76952 /* Foundation.framework in Frameworks */, + B728D0B8FD4F61366B08F0286D1EE860 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2468,11 +2737,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5C2490C24FA2B49FC5B7F84A082A48B4 /* Frameworks */ = { + 6FDA6E979003F407387837DDAE52429C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4716E7BA4AA053D87D451FAA93D1F083 /* Foundation.framework in Frameworks */, + 7AC7831519631D39E66E4DDDFF39CFD3 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2485,92 +2754,95 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 790CE81C6B8A2801C2578631F640B15F /* Frameworks */ = { + 7E9E5348200A036673390A6D667F6C6A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E9BBAE5F8F2E4C8F208242B3B6DB03D9 /* Foundation.framework in Frameworks */, - 5AAB307D3CA099D351F780FD86685FDD /* Security.framework in Frameworks */, + 8791E6BF34A8D048C1D3C4D37BA76E55 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7F914E065031ABE94908A35D3126EC5F /* Frameworks */ = { + 8BA2DAE5BC327A6F4CC2328351911F46 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3D7780B9CB5C937880FD2E05363B3857 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 83D17A0F0604662C26923284FD6DEFF6 /* Frameworks */ = { + 9BE2E908FD76AC673853AB8E7427C503 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BD044C21CA2D482B62D58FDDAF1A2B9A /* Foundation.framework in Frameworks */, + E5B6BE7502CB8CE5B3C92B5836DA6CDF /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8A0AF578D5997E1536916EDD9EBF14FC /* Frameworks */ = { + AD9C5A8DAF4334B670E91B2EC08DBE2C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3BEDC17BB8B9FF4AFAD81F162BAD9A36 /* Foundation.framework in Frameworks */, + 464450D037D17ED5EE2322E180A6A9F5 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8DA48E8C9E0B001C9F6EDC4F16F770D7 /* Frameworks */ = { + B90191500CA804B77BE12F825AA1A87C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E5D8A4465774F9A61D4EB35A40051E69 /* Foundation.framework in Frameworks */, - 882DB7D864B702A2E5698F4A3090E211 /* GTMSessionFetcher.framework in Frameworks */, + E336CC00BD43DEC55599B654220C34DA /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AD9C5A8DAF4334B670E91B2EC08DBE2C /* Frameworks */ = { + C8E14FFBE79BAAE23D6C6D1850D43AD6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 464450D037D17ED5EE2322E180A6A9F5 /* Foundation.framework in Frameworks */, + 21EF6DBE43B5861503160D95BAC4C3C4 /* Foundation.framework in Frameworks */, + 13E5C4E6E79AE2F6B32CA8E40F8EF29A /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B215CE39328DB615ABBF5531B39D5B7B /* Frameworks */ = { + CF9A915868A374C1359A0D97F7A0992C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 620772EEA5200EFD2F3C5E3B20EC68FE /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B2B8CB6C3FDBE8636526A7929D0C92BC /* Frameworks */ = { + D2BBEE4F2DAB26505C8F4DB21AB99ACE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 724ABD76C98544C901B0AAAFB0602082 /* Foundation.framework in Frameworks */, + E8DEA8DF0F65EF1CB45AC83BDB3EA695 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BC0F9DC6FB33F55E96644184C253EA68 /* Frameworks */ = { + D4172A379AA8BA5488CB7418BBE741B9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C835940AF2FF8796C3968267176793F6 /* Foundation.framework in Frameworks */, + 85DCF5911184E1D079A0698F2986AD4D /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC222127A7F61BA644F7AEABF537A456 /* Frameworks */ = { + D74DC90654EA60B982AEE7F8B48F4593 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC3D1CA1437F1B47CE5D3F90D99BE322 /* Foundation.framework in Frameworks */, + 6811F39290E7EBF9CAC49F339CD50CE1 /* FBLPromises.framework in Frameworks */, + AD2E2547EDE0B60F20301F24C58131C3 /* Foundation.framework in Frameworks */, + 7104EC656AB9318CB7800F19DE7D5E56 /* Security.framework in Frameworks */, + 299DF81447D6EA945E7CF8B0D9A20958 /* SystemConfiguration.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CF9A915868A374C1359A0D97F7A0992C /* Frameworks */ = { + D96C94DB05BE1A5E0BC85331FBD4C9B0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 620772EEA5200EFD2F3C5E3B20EC68FE /* Foundation.framework in Frameworks */, + 94962BB3AE8B79C7569FD67AFD0756AA /* Foundation.framework in Frameworks */, + 6AE29611364C22E5A04E5D2168D414CF /* GTMSessionFetcher.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2583,11 +2855,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - ECBB5225CD8FADFE7A5AB03EE4D74B27 /* Frameworks */ = { + EC3801927A39ADB5CF7633B776D4CBD8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2AC455831F3DCCE2C616433DDC6B93C8 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EF965D3AB68861CF8550B2EFDD87F7F6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E662641D7E78C56840FCA3DB5BC695AC /* Foundation.framework in Frameworks */, + 992C11E69C43C01D6D0A2B4260EE5EAA /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2610,1081 +2890,1313 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 02A17F6C8DBAF98751A008D9B3444209 /* Alamofire */ = { + 011D299165BFC0EC5A679EC5739CCF35 /* Support Files */ = { isa = PBXGroup; children = ( - 88726731F9E6B469AC3D265940576F29 /* AFError.swift */, - 3013760CB46015A7919E30420780BC49 /* Alamofire.swift */, - 43590C47EC6ACEBF58FF3B1C9583B16F /* DispatchQueue+Alamofire.swift */, - 0186D1A585E443365DED29109D35A2F0 /* MultipartFormData.swift */, - 71E9F80A1F8A66E35F0981825DDCDEA7 /* NetworkReachabilityManager.swift */, - 6D5AE2C53C67D677436CE6CD04DA9EF6 /* Notifications.swift */, - 0CAC06114B7FA08EE9932F7B5046AFCF /* ParameterEncoding.swift */, - 1B1FD9712B1050A7C12BEA0BF6EDDA38 /* Request.swift */, - 575C7DA4A08830693DD49C448AB0498E /* Response.swift */, - C60637BE799BBEAF968A2E5075C39A48 /* ResponseSerialization.swift */, - 07EC4EAFDB287D70087CDB74272EA846 /* Result.swift */, - 1D776878F1F8A999ED799A0EF9BD39A6 /* ServerTrustPolicy.swift */, - 9F688D2614ABAFEF502F1203E8F839FA /* SessionDelegate.swift */, - 3B0D44A079B3170506CD871C2DEF08E9 /* SessionManager.swift */, - CE9C3E58C550C2C62C30BDCC2397E722 /* TaskDelegate.swift */, - F72451FF952AA4FB1296780F830175D8 /* Timeline.swift */, - BD4EA0FD27E2A52E9A9F7CE92485631A /* Validation.swift */, - 28D37B43E922FEEA3B8B2428E69DB92A /* Support Files */, + E49D3759D45C371B9AA48D01BA38D835 /* PromisesObjC.modulemap */, + 8306A7A9A272343C7957802E78C8AD6D /* PromisesObjC.xcconfig */, + 929CD97FA8905CADDE3271B9B6B47887 /* PromisesObjC-dummy.m */, + 42AB508652D6ECA0CB998B9A99AC5844 /* PromisesObjC-Info.plist */, + 4CE6FDABE8FDA433D3FB4B48BDF4E818 /* PromisesObjC-umbrella.h */, ); - name = Alamofire; - path = Alamofire; + name = "Support Files"; + path = "../Target Support Files/PromisesObjC"; sourceTree = ""; }; - 034490944352C96A33F6C717DBF7056C /* Support Files */ = { + 031CE77526AC4B115CFC04E46FBFD91F /* Firebase */ = { isa = PBXGroup; children = ( - 23C873B4B09D16C6D83D7A1CE9996FF5 /* GoogleDataTransportCCTSupport.modulemap */, - C2B808561A83CD24DDDA3C1579199BBC /* GoogleDataTransportCCTSupport.xcconfig */, - 97EA12673C49DB03177EEC75FA27FD1A /* GoogleDataTransportCCTSupport-dummy.m */, - 55CC760E9480358E350431EC9CF882CE /* GoogleDataTransportCCTSupport-Info.plist */, - C4B86F9ED67B54F3D847EBCE12311FEA /* GoogleDataTransportCCTSupport-umbrella.h */, + F50CD9D25973FB72A6926E978CA2B397 /* CoreOnly */, + 348A56AABFDDED53D176983DAFF647F3 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleDataTransportCCTSupport"; + name = Firebase; + path = Firebase; sourceTree = ""; }; - 07EF2FDC3556643E867FEE3B6FA7EB09 /* Support Files */ = { + 051E9A9AB4BCA93C6BEA03535E170DE8 /* Products */ = { isa = PBXGroup; children = ( - B297B45BB766BB2D8C167BE12A5FD07C /* FirebaseCore.modulemap */, - 9F9E33865EF0EB4B5671869FE73A0E2F /* FirebaseCore.xcconfig */, - 3D6AABC3A2E387567671859837DD14D1 /* FirebaseCore-dummy.m */, - BFD44C8AF7C144D4B5A206B71DEF5C83 /* FirebaseCore-Info.plist */, - 3FF3153A298ACA24172F2EB8D7A8E826 /* FirebaseCore-umbrella.h */, + 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire.framework */, + 05C4280976BF93DA8B36818DE2E2A5E0 /* Cosmos.framework */, + 3347A1AB6546F0A3977529B8F199DC41 /* FBLPromises.framework */, + E2B63D462DB7F827C4B11FD51E4F8E2D /* FirebaseCore.framework */, + 8CC9178C366942FD6FF6A115604EAD58 /* FirebaseCoreDiagnostics.framework */, + 86375444C196BA272DDBB8165BF64A15 /* FirebaseCrashlytics.framework */, + 13C8C8B254851998F9289F71229B28A2 /* FirebaseInstallations.framework */, + 2DA0D814DFCB860D31D7BCD63D795858 /* FirebaseInstanceID.framework */, + FD519882861480B93B563B477CE1FA29 /* GoogleAPIClientForREST.framework */, + 856B5CD56F194FAD26EA91620B66D614 /* GoogleDataTransport.framework */, + 6942351307BC1F54575D9853307EAE0E /* GoogleDataTransportCCTSupport.framework */, + 4DFBF9CE0440C3CACD8A52D4213CF90B /* GoogleMVTextDetectorResources.bundle */, + 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac.framework */, + B43874C6CBB50E7134FBEC24BABFE14F /* GoogleUtilities.framework */, + C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher.framework */, + A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift.framework */, + CF0AA9FBFBDB70858C030769541505ED /* MarqueeLabel.framework */, + 06FC5C9CF96D60C50FCD47D339C91951 /* nanopb.framework */, + 0AB91F46DDDA5588520D012E6F4FB918 /* NotificationBannerSwift.framework */, + 0A64A5963516FC401DF95E1DD737CC40 /* Pods_FoodScan.framework */, + 90DA5C11FF9EE4A98F1ED18777C47157 /* Pods_FoodScanTests.framework */, + 2095243CBEF52A9869069E52A0A32722 /* Pods_FoodScanUITests.framework */, + B72A389B0E6A6DD2F3D61F4DC7F84D83 /* Popover.framework */, + C2105C94812B6214B154F54DCEDB72AC /* Protobuf.framework */, + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage.framework */, + 979486118B3E90C08386079D57962701 /* SnapKit.framework */, + E23C076BA70925415F490FEDB215DA92 /* SwiftyJSON.framework */, + F54A3C504AE7A4C6C1953576C5D40F56 /* UILoadControl.framework */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseCore"; + name = Products; sourceTree = ""; }; - 0964898A91BF1B297BED6C8AF0026031 /* NSData+zlib */ = { + 08F517F70D62B4B3B78CC48E3426F16E /* FirebaseInstanceID */ = { isa = PBXGroup; children = ( - E50F7E52D14FD089EBB57FD2C137153B /* GTMNSData+zlib.h */, - 2B9109100177A4B153D68E3380403AFD /* GTMNSData+zlib.m */, + A846BB87F91F9F641940A12D49BE1BF8 /* FIRAppInternal.h */, + 5AFB9BC083A109B15A557D990B132E7E /* FIRComponent.h */, + 7BA1C04E33F4E6E156E37E0C5AB9B5BC /* FIRComponentContainer.h */, + 9CAF62102263E5AD92606E5EAC91D7B8 /* FIRComponentType.h */, + B9BF6E7DF2E6A6A11465E97EB6BCB1FF /* FIRCoreDiagnosticsConnector.h */, + 459A8171A5A32FF1BAC7F75F362C3C7A /* FIRDependency.h */, + 1B2DBA9C589B877CD549555F4F97BAA1 /* FirebaseCoreInternal.h */, + E9B908472FE2E8E544F3434D3EC0B3B2 /* FirebaseInstanceID.h */, + FA38C8E3E480D656319A79F633FD29D3 /* FIRErrorCode.h */, + 78FDD561B62C79D13BBCEAB370E0ED19 /* FIRErrors.h */, + 7FE6A666FB3BBC90A963E7678853FCAD /* FIRHeartbeatInfo.h */, + 6E1643B5E027E1FF9B66796A6D7C5FF0 /* FIRIMessageCode.h */, + AD7F713CFFE9CD932A94A9BCFB9B1055 /* FIRInstanceID.h */, + 26C9CCCA375602E478F0284F850A81E8 /* FIRInstanceID.m */, + 27E5D866472ED3B2F5BD84463F962454 /* FIRInstanceID+Private.h */, + E0CA20C4BF19FEE4415BAB65031ED0F1 /* FIRInstanceID+Private.m */, + 29B23DC49D34EC9FA684C3D91AFB928E /* FIRInstanceID_Private.h */, + 0FC360B47F0B7A2409CFAA057E8872A8 /* FIRInstanceIDAPNSInfo.h */, + 211A1FF36E47056373DC5B02ADD65CAA /* FIRInstanceIDAPNSInfo.m */, + D9F8E064BFBA8C05C2508A8EA4CB65C5 /* FIRInstanceIDAuthKeyChain.h */, + 94C84BE73E1ADEA5104E7C92BEAAA9DC /* FIRInstanceIDAuthKeyChain.m */, + B5F715858774F0085C398BA3EF4B5E56 /* FIRInstanceIDAuthService.h */, + 4AD2CEDB0543C947682706ABB1061C8B /* FIRInstanceIDAuthService.m */, + 0ADA2AAA92871FA7CCE018A3A1607CCB /* FIRInstanceIDBackupExcludedPlist.h */, + 3CB53503593458B04A17C632B37F0018 /* FIRInstanceIDBackupExcludedPlist.m */, + 92664586F1AE31B375E80B6BFCA73EB4 /* FIRInstanceIDCheckinPreferences.h */, + FBB15BAECDA92DF1BDA47EDE53A6E736 /* FIRInstanceIDCheckinPreferences.m */, + 899D1D14881B53CC6FFE6067C6A069B5 /* FIRInstanceIDCheckinPreferences+Internal.h */, + 81F4AEF35644BE10D3F6902401F743BE /* FIRInstanceIDCheckinPreferences+Internal.m */, + 2298E65D24495F9C675DC8C8D0BE03F4 /* FIRInstanceIDCheckinPreferences_Private.h */, + 99B52929F48E237997ADDFDA868DDF26 /* FIRInstanceIDCheckinService.h */, + B83697E728164C4BBBB5DB3765FCB0DB /* FIRInstanceIDCheckinService.m */, + 35E6A94E353ECC6C305C6F9531503CC0 /* FIRInstanceIDCheckinStore.h */, + 8A1A9CC172ACA2A94470A6DBAF0D5459 /* FIRInstanceIDCheckinStore.m */, + BF5503DC7BCC86D7F3B07D0C0B2ABC7B /* FIRInstanceIDCombinedHandler.h */, + 6153309B0EAB6C72A99D4C108FD108F4 /* FIRInstanceIDCombinedHandler.m */, + D7C76986CA2DCB2EB5BA5CFD2F7AB0E5 /* FIRInstanceIDConstants.h */, + 46D592B7DE97CEC75DB56AD18A709AE2 /* FIRInstanceIDConstants.m */, + CF0F1360C0B548EE1F3556785DBA7E01 /* FIRInstanceIDDefines.h */, + 47E77938D8A21306376519D3E96AD36C /* FIRInstanceIDKeychain.h */, + EBB14DF59129E25719E5AEA564CA1ED2 /* FIRInstanceIDKeychain.m */, + 5EC5B5AA15FF7A6502760E5C24C1A8D6 /* FIRInstanceIDLogger.h */, + 34FF6746E3D4CCF13B64CD7533FB6F34 /* FIRInstanceIDLogger.m */, + D04F5160EFF5CA2B8546D6DCDB609443 /* FIRInstanceIDStore.h */, + AC3EC2A7604D0F3DF6DAE10C5FE7A241 /* FIRInstanceIDStore.m */, + 7DAE3B29C3B2F6B15FBB9A702D5516B2 /* FIRInstanceIDTokenDeleteOperation.h */, + 32E066341C04A8D0C0A9CD030AED82C4 /* FIRInstanceIDTokenDeleteOperation.m */, + 69D29151B9D73C9879A5459D8D62DECC /* FIRInstanceIDTokenFetchOperation.h */, + 453977719F0A826E13493F5AD7C11805 /* FIRInstanceIDTokenFetchOperation.m */, + 378EDDB11C3AA3A9CD84E4ED1E9F1436 /* FIRInstanceIDTokenInfo.h */, + BE9B50D1E08657347194A18DA9107C78 /* FIRInstanceIDTokenInfo.m */, + A12C1324644EF3D830C1BC0FE2BBBDA1 /* FIRInstanceIDTokenManager.h */, + 062F240D69FBFD870897B26AB513C43F /* FIRInstanceIDTokenManager.m */, + D3DFE01BD67E9FE46AA9DA9867ABC699 /* FIRInstanceIDTokenOperation.h */, + 009D4B5EF871F53B033D51B0DB42C68A /* FIRInstanceIDTokenOperation.m */, + 852D0AFC96C04B2551BCDD628EB3354C /* FIRInstanceIDTokenOperation+Private.h */, + 7EB1E6C9D4D485FD361568102FE7713B /* FIRInstanceIDTokenStore.h */, + 21D290B09BE53B6F496BCE35678618EC /* FIRInstanceIDTokenStore.m */, + 8797C65FEF6128853675EE8DA627208D /* FIRInstanceIDURLQueryItem.h */, + 346B09FDFC0110B6C7282B738B2A6D0F /* FIRInstanceIDURLQueryItem.m */, + E2974F80DFEBFA5B672E70DE29E3A817 /* FIRInstanceIDUtilities.h */, + 92F6F64572542B77B8D39D106E5AB4F2 /* FIRInstanceIDUtilities.m */, + 1DA9886F268B00AFC14B5D1A31F6D319 /* FIRInstanceIDVersionUtilities.h */, + 56C4F8E5F63541B72A18CB5DEC232976 /* FIRInstanceIDVersionUtilities.m */, + E5CACEAFB90B8CE50E00CD9509579CBD /* FIRLibrary.h */, + 1AE5AC455B4B84BB10325AA6D5634710 /* FIRLogger.h */, + E62CC748304CE4C0BC87F3AC7568E827 /* FIROptionsInternal.h */, + F241E619955DB49734117035F5C322F7 /* NSError+FIRInstanceID.h */, + 64B43E576C16E2102DF55C89C406F0A0 /* NSError+FIRInstanceID.m */, + 8E72F4D93293D70345B2FCC50A0055AC /* Support Files */, ); - name = "NSData+zlib"; + name = FirebaseInstanceID; + path = FirebaseInstanceID; sourceTree = ""; }; - 0BEE4F2A3FC1A43A0849B435938C5EBA /* NSString+URLArguments */ = { + 0C6EBBEDA8BF8B51F2C05E0B0506382A /* Frameworks */ = { isa = PBXGroup; children = ( - 62DB5775DB2CFBCA61284FA700A79486 /* GTMNSString+URLArguments.h */, - BD7E34CF9731B575459F5087F8C9EA17 /* GTMNSString+URLArguments.m */, + FDD02CC9A45B0899E205C6161422A9B1 /* FirebaseMLCommon.framework */, ); - name = "NSString+URLArguments"; + name = Frameworks; sourceTree = ""; }; - 0D9002A58D526904938D97D24D5E6E21 /* Support Files */ = { + 0C8431D72B51DD0C1E6DD5BC0FAE7695 /* Core */ = { isa = PBXGroup; children = ( - 3422743084301B34D0B7D1DCC2A498F7 /* Cosmos.modulemap */, - 00C708B92EF46243BE1B545E47CF4B95 /* Cosmos.xcconfig */, - 56E5D93159E6FE842A18B061E25607F6 /* Cosmos-dummy.m */, - 9DC7FA1E17B1D780D1CBE5310DD7291F /* Cosmos-Info.plist */, - 0E1BDB07F32273E603A40E08573E8F76 /* Cosmos-prefix.pch */, - 6BDBCB5A922A3939E81BE34161440D72 /* Cosmos-umbrella.h */, + D6E35806B1ADD32B871A5414B6F458E7 /* GTLRBase64.h */, + E11889F61BF54A7543863C9CA7472057 /* GTLRBase64.m */, + DC2FDF5233932C4133D24F0B8FBCA41C /* GTLRBatchQuery.h */, + 1B784A277FD94DD76E5D20A6BC981A09 /* GTLRBatchQuery.m */, + BF709C7EDFF1535DD045158156303831 /* GTLRBatchResult.h */, + CFC760F59509EB5504CA40112221FE9E /* GTLRBatchResult.m */, + EBA4D4107A93B48E82A9FFFFFF64A30C /* GTLRDateTime.h */, + 6B6E87D50DC66F7B147479B13A291F13 /* GTLRDateTime.m */, + B38BF3464C12B6D228E99E7B909DE98E /* GTLRDefines.h */, + F10D9C257882F584708DEA43803FE56A /* GTLRDuration.h */, + A2790F6BF008D23076E6A6C1725B0D0F /* GTLRDuration.m */, + F4CA697BAFD1761A238586D41040E570 /* GTLRErrorObject.h */, + 6D562FFF1BD33BC57ECA5F10C5DAEB7B /* GTLRErrorObject.m */, + A73B3B6C8EDFD43712C652F666FA03E1 /* GTLRFramework.h */, + B07900E59D71AD43916C73EA2ABEE914 /* GTLRFramework.m */, + AB91CEC13614EF16232D18BF9B1BEB2D /* GTLRObject.h */, + 5227C185BE46B518E07AEA0C5FECC882 /* GTLRObject.m */, + ABDF1E46F94EA1AF46BE993FA199C9DE /* GTLRQuery.h */, + 06D6E6F7A26B5CDF44813D492ABE44CE /* GTLRQuery.m */, + C64EC9F0E633A955BB36BC139AE045BA /* GTLRRuntimeCommon.h */, + C95B0565E06E039114FD8E7902FB3E92 /* GTLRRuntimeCommon.m */, + F5299AF67E4B99F986EEAC776BFCC7E3 /* GTLRService.h */, + EB6FC82990F5DD4E4655A312F2D761A3 /* GTLRService.m */, + BD66A3BD61009595B0D4ADE189709EF1 /* GTLRUploadParameters.h */, + 091735C23D1CA8B028105411310731EC /* GTLRUploadParameters.m */, + C10B9EBBC7A1D58A4C5188E6F8CC60BC /* GTLRURITemplate.h */, + 9A1DE698CAB850C5936A555528E63CEB /* GTLRURITemplate.m */, + 0A773D45A52BF20B6E0CBFF3734644B9 /* GTLRUtilities.h */, + ABB21CC643DC3204C973D9E0BA2619DD /* GTLRUtilities.m */, ); - name = "Support Files"; - path = "../Target Support Files/Cosmos"; + name = Core; sourceTree = ""; }; - 10385508FAD0D037013A51BEEF7034F2 /* Protobuf */ = { + 0C9A332425337602BDF66304A45B257E /* Protobuf */ = { isa = PBXGroup; children = ( - 431FC9734185D8A1AE8954BEE79FD220 /* Any.pbobjc.h */, - 1E17171112D417F262F8402CFAC4E287 /* Any.pbobjc.m */, - D560F208088F9C16347E6648692D6709 /* Api.pbobjc.h */, - CB79C2954E8BB40A3E4C45D328C1BC2C /* Api.pbobjc.m */, - B4F73073113433827EED13C099FA7563 /* Duration.pbobjc.h */, - 6BC559CD85652373AD4742845AD187E6 /* Duration.pbobjc.m */, - 252BB1ED6D7DB783EE213B9B808B365F /* Empty.pbobjc.h */, - F026413B1C3605032FD6AE49213C1BBC /* Empty.pbobjc.m */, - 4E7576EC22F550FA7F16B609C6A4D40C /* FieldMask.pbobjc.h */, - BBF9BF21D70F8DD5FF169FEE1345DAA7 /* FieldMask.pbobjc.m */, - BD5A227D657289824B605E5450A39323 /* GPBArray.h */, - 01424D35ABBF2002B14B88C218562E6D /* GPBArray.m */, - 6FE2C2F0DE4056780FA4BDAE92C4CE5B /* GPBArray_PackagePrivate.h */, - E29B37DDF6917885E71EC92D9471EA0C /* GPBBootstrap.h */, - 78B4632B7495E163C76D8E856D436E02 /* GPBCodedInputStream.h */, - 42D7D77667604A229A7508293C89067B /* GPBCodedInputStream.m */, - 48BA43872EF764E48AA6ECE2231C8992 /* GPBCodedInputStream_PackagePrivate.h */, - 71E6B23B6C9BCE068D430429C0C52F26 /* GPBCodedOutputStream.h */, - DC96ED2FC9F24902F2F7C40DF69AD8CB /* GPBCodedOutputStream.m */, - ACA113DCC26FB5C004C3D1E579B7A682 /* GPBCodedOutputStream_PackagePrivate.h */, - B96821357715CF0E3B1A62937C9ABF55 /* GPBDescriptor.h */, - EC5261206A9B4D04304FC7EC5F793D66 /* GPBDescriptor.m */, - D1729F1B8052D9DC7D57A84B39A03B4A /* GPBDescriptor_PackagePrivate.h */, - F0665F90052BC6A53FECC6EA32D442B0 /* GPBDictionary.h */, - 3E8DBDEE150292127AF8808AF2E040EE /* GPBDictionary.m */, - 8F52ACDB18BE515211BC3CD0D84B5052 /* GPBDictionary_PackagePrivate.h */, - CA29893DBA60A9ACB725A81BE180B8A4 /* GPBExtensionInternals.h */, - 45648D83824956DF96B27378EB72C447 /* GPBExtensionInternals.m */, - D90E947C293E03E312B554FE51E99859 /* GPBExtensionRegistry.h */, - 2E1A4A25FBEF7BDA5D0CC6F800F6667D /* GPBExtensionRegistry.m */, - FA18453B63005E07890312140519F7AF /* GPBMessage.h */, - 6C45452E82C34F4250B2D409DAB226AE /* GPBMessage.m */, - 1FEF05809A9E6884D039A58FCB543A1B /* GPBMessage_PackagePrivate.h */, - 085F5D0616BC61AD638B79F153BDC46E /* GPBProtocolBuffers.h */, - 172B68489891580021F7DED933D5BD75 /* GPBProtocolBuffers_RuntimeSupport.h */, - 586DC7B43E1DA9B833AA67C04D9DB213 /* GPBRootObject.h */, - 244F18C6E16488B0C60980FDAD543DBD /* GPBRootObject.m */, - D6EEBB4DCFC5F2CDD9757AE7A60C7322 /* GPBRootObject_PackagePrivate.h */, - 7076A43812D5FB95FEBE388D7CCBBFA5 /* GPBRuntimeTypes.h */, - 957809922E897B0DA1EF8558EC38B509 /* GPBUnknownField.h */, - 8BAAE2807F7096752BFFB107AED235DE /* GPBUnknownField.m */, - D1E3BA3568609D149DE08C6F1299071A /* GPBUnknownField_PackagePrivate.h */, - 2221CFD6E463C0545D36ADAF0790BD8B /* GPBUnknownFieldSet.h */, - 74A583DD8F256F931A4779540288C809 /* GPBUnknownFieldSet.m */, - F0127120A30E5ACF0148FE48F690DC1D /* GPBUnknownFieldSet_PackagePrivate.h */, - C20D5CAF0BAB4C4542387CA2C9C09F37 /* GPBUtilities.h */, - DFF28C8D0DA69705F82E9BC162BD6FA9 /* GPBUtilities.m */, - E6DB457207A5CFDF08C5976DFDC7643C /* GPBUtilities_PackagePrivate.h */, - 21F88122FBE496F8E98D8F854B6018DA /* GPBWellKnownTypes.h */, - B46575E66007A40EE693DC9E49ED2EB9 /* GPBWellKnownTypes.m */, - 339420666ED4390CC426038AC6A42DED /* GPBWireFormat.h */, - 8FF7A2135D2FF36104E617A8D1D51254 /* GPBWireFormat.m */, - B4051B1F03248C4D19DD499CECF9C811 /* SourceContext.pbobjc.h */, - 8F14425B3F4F3E7F26F9552EBF45ED50 /* SourceContext.pbobjc.m */, - C30B8252426B6AB0000C47D67E4C1BB8 /* Struct.pbobjc.h */, - D586D9805C30E3070112732088F0318D /* Struct.pbobjc.m */, - 2DC483A2F12669CF56691C51CA34BE17 /* Timestamp.pbobjc.h */, - 4ADA3A28C6ACD641C285EC52500B5BCF /* Timestamp.pbobjc.m */, - 738F1DF5CC5FCFB91B2371F79D60EA75 /* Type.pbobjc.h */, - C9AC191F9D4D561895A733F6E64264BD /* Type.pbobjc.m */, - 7428D6B81D44FA3D20837B01D303F928 /* Wrappers.pbobjc.h */, - 34ACE6A39F27F4B15138154B28D01832 /* Wrappers.pbobjc.m */, - 9FBC1A15CCF7E242E755213ADADC1E38 /* Support Files */, + A363A85ACEF996CE582274C3F422B54E /* Any.pbobjc.h */, + 8DDD2114F9AA896977F2B67BDC0AFC19 /* Api.pbobjc.h */, + 1E25D0CF315E9E68A8EE102CF8C97396 /* Duration.pbobjc.h */, + B568720C6E0225CB63CD3E6872E3C1BE /* Empty.pbobjc.h */, + 60C1E5AC57C38CF63AAF96DCAECB0FBB /* FieldMask.pbobjc.h */, + 426F52056B0B731806A0D5E1D71DDDE8 /* GPBAny.pbobjc.h */, + 8F0CB73C4FDA2A3619B7C3CCD0BC28B1 /* GPBAny.pbobjc.m */, + 5D7B070ADB703623F667CE7828F17626 /* GPBApi.pbobjc.h */, + 490F72E72EA878E6DB6941068AB2B34F /* GPBApi.pbobjc.m */, + 506AA04DA7BEFEDC7BD8E42B7E622C1B /* GPBArray.h */, + 1AE340ABA639D6EE62F2FEBBE010F3B2 /* GPBArray.m */, + B6B47AB5107B86998E47F57D031FF297 /* GPBArray_PackagePrivate.h */, + 8134F716B87B3E8E6ED20A90F4BA843D /* GPBBootstrap.h */, + C250B3162877D73DD11713960F5D0BA8 /* GPBCodedInputStream.h */, + 5A9E4CE72CE695EE466D31010F4C1319 /* GPBCodedInputStream.m */, + F092267703387DA58E11466115123BD5 /* GPBCodedInputStream_PackagePrivate.h */, + 97CFFF6A97FDDDCF911E92AF03B9AB3F /* GPBCodedOutputStream.h */, + 27742BA112387B2A8234BCB4938176C2 /* GPBCodedOutputStream.m */, + C58B91484E8387B29013766FA217BAEF /* GPBCodedOutputStream_PackagePrivate.h */, + E9C4659E4DFE14EF5F9A7DBF5C11DA3E /* GPBDescriptor.h */, + 84D0A1612CCFB26A4192E54726E5F551 /* GPBDescriptor.m */, + 8D90D630E29EC7991D869CB416D2A259 /* GPBDescriptor_PackagePrivate.h */, + 7580A9D865A2536FFB64A80053AD87FF /* GPBDictionary.h */, + D962B236EEA31FB0727DDE419F2C2518 /* GPBDictionary.m */, + BCF7A8FA853345B37488A1F86C765AFC /* GPBDictionary_PackagePrivate.h */, + CD37B056601A30F417C746B6B01D818A /* GPBDuration.pbobjc.h */, + D4A6DA229D9EF8520D1070E7B3D5F583 /* GPBDuration.pbobjc.m */, + 80FB1D46BB629B394B2A615786EEEF69 /* GPBEmpty.pbobjc.h */, + AB0271E2DD0E130B2E2996CA4BD62B2D /* GPBEmpty.pbobjc.m */, + C1752DBA39F3F80A32F8B041CB1EEAE8 /* GPBExtensionInternals.h */, + 9900CE79B1DD2B7FC3552E48671AC398 /* GPBExtensionInternals.m */, + 2F0B41374FCA9A698C3E43E85BD7B570 /* GPBExtensionRegistry.h */, + 78691BF979E6C913C637A7AE844C6BCF /* GPBExtensionRegistry.m */, + 56A7493E74CAD3A000CD2961DF90F4A1 /* GPBFieldMask.pbobjc.h */, + 534FACE0151E3D0C4F27850D9FDA809E /* GPBFieldMask.pbobjc.m */, + AC5439A87E6B53D26D56DE6ED285E244 /* GPBMessage.h */, + 24265D8A92D0D8109DDBE73F5D11A708 /* GPBMessage.m */, + 90B2BAC986AA3751E9D00BEC06460E19 /* GPBMessage_PackagePrivate.h */, + F790367FEB9B9A0FE4644F5091D61BF9 /* GPBProtocolBuffers.h */, + E6747620919AD62D6CC376A5FCBD7EA6 /* GPBProtocolBuffers_RuntimeSupport.h */, + 7BAC4CABE1F84DFDDD71393FF8B8EBF1 /* GPBRootObject.h */, + 27C818B870E913B7A4C4505E4B8B8C97 /* GPBRootObject.m */, + A0F26A9D074B7EDE93F0A7C836555AA7 /* GPBRootObject_PackagePrivate.h */, + DC5DF27D07A485C536A42E827F21FFEA /* GPBRuntimeTypes.h */, + 8654B4DBA111F6D78096F93A2B9C7539 /* GPBSourceContext.pbobjc.h */, + 0976FAB7ECC626BD43CE29789AD5D879 /* GPBSourceContext.pbobjc.m */, + 286A3C615CB4516507DBE30E526EA329 /* GPBStruct.pbobjc.h */, + D211AAFCFE0A7CB70D07BF3AEC35C3C4 /* GPBStruct.pbobjc.m */, + 6636ACA2BD2F24F49E9EFA5D572A9BAD /* GPBTimestamp.pbobjc.h */, + AEC59A5DCFCC4AEF73DB0E2BE04A16B5 /* GPBTimestamp.pbobjc.m */, + 9A2F96EDE76BD2591E6C4CC992BCD1DE /* GPBType.pbobjc.h */, + 32C000DC3744D0D8D5482446D109C95A /* GPBType.pbobjc.m */, + FCDD0289C506918952123492F6B43E34 /* GPBUnknownField.h */, + ADD8EA51DCA114E670593F70F7DABA5D /* GPBUnknownField.m */, + AD295C22A1C12132CE297FE036C8E804 /* GPBUnknownField_PackagePrivate.h */, + DEF96F0A1A95E52441306AB6C23338AD /* GPBUnknownFieldSet.h */, + 85EBBA77A88452ADC33D50D8289AD5A2 /* GPBUnknownFieldSet.m */, + 292331EB8E2A2E71C7B62D57ABA9A5E4 /* GPBUnknownFieldSet_PackagePrivate.h */, + B873FC591A968B4FF2843287B360CFBF /* GPBUtilities.h */, + BF9698F082CDD6898BACC2EB9410118C /* GPBUtilities.m */, + 8C3580B678F83A04686BACEE5150E770 /* GPBUtilities_PackagePrivate.h */, + EC3135574184F3D54A42A98CD5424777 /* GPBWellKnownTypes.h */, + BDD6052C6B0D6447C8A789F014A4CC18 /* GPBWellKnownTypes.m */, + 033373303D8729FC48E0A5E6FF5BDC63 /* GPBWireFormat.h */, + 29DAD260DB429958D5D76EA47AAF1922 /* GPBWireFormat.m */, + 83A53CC973BC8DD33C64A188AA2D79A2 /* GPBWrappers.pbobjc.h */, + 5AE2B063B0D75A94E6DD691CC4CADE1F /* GPBWrappers.pbobjc.m */, + C0919E5D891EA663A1698C14A98DB343 /* SourceContext.pbobjc.h */, + 790FCAB3E311D1BC85E59B8041D34027 /* Struct.pbobjc.h */, + C757ACAC1FCD254EB154071DBE8D2185 /* Timestamp.pbobjc.h */, + A94758F71CB3AADAA52AD0491E12E3EF /* Type.pbobjc.h */, + ABCC74246F50C40370F53276FC1EB614 /* Wrappers.pbobjc.h */, + E87EC80AA55D7D936A099F2644ECA367 /* Support Files */, ); name = Protobuf; path = Protobuf; sourceTree = ""; }; - 1299D549E2DCE38DDEB639F001D4EC3D /* GoogleToolboxForMac */ = { - isa = PBXGroup; - children = ( - 150D6E7B93832456D7CC02179619FDE0 /* DebugUtils */, - 51A82BEBAE6E3DD6C543B7297C2D6060 /* Defines */, - 1E909D54791DB08462B84773CFF57C0A /* Logger */, - 0964898A91BF1B297BED6C8AF0026031 /* NSData+zlib */, - 97732B09E38625E5AE3E0B96F8F9E68B /* NSDictionary+URLArguments */, - 0BEE4F2A3FC1A43A0849B435938C5EBA /* NSString+URLArguments */, - A7A35BB22373C78E3B517D1A1E85C268 /* Support Files */, - ); - name = GoogleToolboxForMac; - path = GoogleToolboxForMac; - sourceTree = ""; - }; - 150D6E7B93832456D7CC02179619FDE0 /* DebugUtils */ = { + 0CA983F80C10132A02CFF4BA8FB3CA18 /* IQKeyboardManagerSwift */ = { isa = PBXGroup; children = ( - C18403726406D5B32E789E3FED03C9F8 /* GTMDebugSelectorValidation.h */, - DB7AD804124B790F24E10F9BD067EAF4 /* GTMDebugThreadValidation.h */, - A224A84210EFF5D96ED263E7FDE6BFAA /* GTMMethodCheck.h */, + BAB1166009894524FAE7A7EA35EA50C0 /* IQBarButtonItem.swift */, + DC4687D00B3D316451650489A4F72517 /* IQInvocation.swift */, + D6FFB3C98800C56BEA09C6AEFBAB8668 /* IQKeyboardManager.swift */, + A3EECF44CC74B13A8017A288493FD418 /* IQKeyboardManagerConstants.swift */, + C1C4A2C3E98EBA4303C8BA546CA273F0 /* IQKeyboardManagerConstantsInternal.swift */, + A1AC6C255FAFDBFDE3F30E0AFD98718F /* IQKeyboardReturnKeyHandler.swift */, + C68A7A29F011511E60A7A11E9C400E2E /* IQNSArray+Sort.swift */, + A7ADFA7B0C3C0CB5AF238AF905E72B29 /* IQPreviousNextView.swift */, + 6FE6227E0A26CFEAF1F676F2D06C72E8 /* IQTextView.swift */, + 462744F3538BFDADF52424FD0A68830B /* IQTitleBarButtonItem.swift */, + F7F27F5DD83CA67CC41FC0A02B14D98D /* IQToolbar.swift */, + C5EB426ABF9FCA11F89F3F309AC9FE3C /* IQUIScrollView+Additions.swift */, + 0EFB846CBA530270DD3C0167CC34CED4 /* IQUITextFieldView+Additions.swift */, + 45B4659964722AE29215F34C2598A065 /* IQUIView+Hierarchy.swift */, + DD1FFDC696E79B631C87891210C58B6D /* IQUIView+IQKeyboardToolbar.swift */, + 74FFD15BD93B0C189C9B756E238B2D80 /* IQUIViewController+Additions.swift */, + FAF727F5D983A5FC1A3CF858DF2ED66C /* Resources */, + 62CD35991A8BF49B04D8385681ABB43C /* Support Files */, ); - name = DebugUtils; + name = IQKeyboardManagerSwift; + path = IQKeyboardManagerSwift; sourceTree = ""; }; - 159F7DBE0B33584A87ACBA9B2A0A0821 /* Support Files */ = { + 103501E31267D19B2DB94837A325C876 /* Support Files */ = { isa = PBXGroup; children = ( - FB54E63AA18E891CCE274EA40ADC5661 /* SwiftyJSON.modulemap */, - 57BFAC23C9D9FDA42BF24BE37B9D46C6 /* SwiftyJSON.xcconfig */, - A80857139AE8EE48D8D6401A95E16525 /* SwiftyJSON-dummy.m */, - 561F02CBFAA1D41A8EC5562B19416A48 /* SwiftyJSON-Info.plist */, - A6827360ADB66ACFF4D9006D6AA817C1 /* SwiftyJSON-prefix.pch */, - D32EFECDFCFA4965010C951905CA941D /* SwiftyJSON-umbrella.h */, + 54FAB3ED9ACD7F090368B94F6DCB7C7F /* GoogleAPIClientForREST.modulemap */, + B849DA3C41FC58DBB5BDE4FFCE455C53 /* GoogleAPIClientForREST.xcconfig */, + A3E7A1E06B25EEF37A5160EC40C0FFE1 /* GoogleAPIClientForREST-dummy.m */, + A9D93A3EE2610E0D4B864E6146BD35F6 /* GoogleAPIClientForREST-Info.plist */, + BFEC01FDA9975222171199B34F2BD454 /* GoogleAPIClientForREST-prefix.pch */, + 9F62F329D2CC6476771EA6646536544C /* GoogleAPIClientForREST-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/SwiftyJSON"; + path = "../Target Support Files/GoogleAPIClientForREST"; sourceTree = ""; }; - 15F06566D3E156DD04279B96DF9C5990 /* SDWebImage */ = { + 108774AFFF16E39007F92E281173286B /* SDWebImage */ = { isa = PBXGroup; children = ( - 4CF4B2057ECD57E2E8DD8B3B98101BD5 /* Core */, - 7BDC8AC276B71365EA844A9B2CCB2123 /* Support Files */, + CD7816A52439C3FDAB8786C1BE0B512E /* Core */, + 7C2045719995AFDB7D979616AEC17735 /* Support Files */, ); name = SDWebImage; path = SDWebImage; sourceTree = ""; }; - 16FAEF8DDA012BBCF8F6060BA35ABB47 /* FirebaseMLVisionTextModel */ = { + 12658655C6D59B781091BDC22535C198 /* FirebaseAnalytics */ = { isa = PBXGroup; children = ( - 9A922B178183CF0E13F8DE20D72F905C /* Frameworks */, - 305CDD4FDD4C78C2180F3632FE7B6886 /* Resources */, - CF94F0CB5460A98E34322E4627058801 /* Support Files */, + 3E1722F1B63948C766A94332BFAF6343 /* Frameworks */, + BDC24803E31A8342E457191D38FE2A0F /* Support Files */, ); - name = FirebaseMLVisionTextModel; - path = FirebaseMLVisionTextModel; + name = FirebaseAnalytics; + path = FirebaseAnalytics; sourceTree = ""; }; - 1A8541292BAE4D46B2DDE39A52F236C9 /* Vision */ = { + 142F989ED32A7F86CD5FFEEC3624C881 /* NSData+zlib */ = { isa = PBXGroup; children = ( - 277CBC1725199B614D7F4B30BAE88511 /* GTLRVision.h */, - 377C972240AAE439687E756766BCE6BB /* GTLRVisionObjects.h */, - 03539C5FF96EBB1A3DA258D11A5BD4A0 /* GTLRVisionObjects.m */, - 5AC6F1F922CF60E74E8720A2ADC70184 /* GTLRVisionQuery.h */, - ECD595F38C65873191A7F279C7C31DF6 /* GTLRVisionQuery.m */, - ADE68A1DB87E18DF0EFCBA867DD27A2F /* GTLRVisionService.h */, - D9181362112EE2E5364D786222CFB8C1 /* GTLRVisionService.m */, + C52B51A2A45A39A4E8EEE0CB88B7076D /* GTMNSData+zlib.h */, + 86E693529D44CB693E2859C21BD25E72 /* GTMNSData+zlib.m */, ); - name = Vision; + name = "NSData+zlib"; sourceTree = ""; }; - 1B4350D75ECF1AC0196C1D54266582F3 /* Support Files */ = { + 1E21E3C6488B2479068896AE260FB7BF /* NSDictionary+URLArguments */ = { isa = PBXGroup; children = ( - E74FA48FF9B5D7B5326FBB5156805570 /* FirebaseInstallations.modulemap */, - 762E9155A1063DDA02AE680D8AF80FDE /* FirebaseInstallations.xcconfig */, - C8B9D6924A46C38E364B78A420F42507 /* FirebaseInstallations-dummy.m */, - D9EA85EAD6EE36C001F3E3D2882F9FC7 /* FirebaseInstallations-Info.plist */, - 2EEF27E6B6AD9D0C498F01822C988A49 /* FirebaseInstallations-umbrella.h */, + 7DEA7BD494E8985710E6F5511D86D43A /* GTMNSDictionary+URLArguments.h */, + A712A28C24749F579E69E51F8D67721D /* GTMNSDictionary+URLArguments.m */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseInstallations"; + name = "NSDictionary+URLArguments"; sourceTree = ""; }; - 1E909D54791DB08462B84773CFF57C0A /* Logger */ = { + 23483021BA6FFEC49C53FDDF06B79E8A /* GoogleAPIClientForREST */ = { isa = PBXGroup; children = ( - 5DD77662A5A27AA468D014AE7E7C6E49 /* GTMLogger.h */, - 2A12CC6B8D6B35313E68D3723F28B00A /* GTMLogger.m */, + 0C8431D72B51DD0C1E6DD5BC0FAE7695 /* Core */, + 103501E31267D19B2DB94837A325C876 /* Support Files */, + EF801A85CDDD6B396572B954CBBA8693 /* Vision */, ); - name = Logger; + name = GoogleAPIClientForREST; + path = GoogleAPIClientForREST; sourceTree = ""; }; - 2419412A2912EC12B918C400C81CE353 /* Support Files */ = { + 254191F55D477C791923BD02E37ED30A /* Frameworks */ = { isa = PBXGroup; children = ( - B19FF47C184C31B3C892CE6C62B8C2DF /* IQKeyboardManagerSwift.modulemap */, - 3F32098B1A2022AC15528F4EAE12D966 /* IQKeyboardManagerSwift.xcconfig */, - 2111F369D0BEC039701379A7637608C1 /* IQKeyboardManagerSwift-dummy.m */, - 661755914F4D779C73DE293B1B9C2B50 /* IQKeyboardManagerSwift-Info.plist */, - 902D4A9BE71ADB472061799597843407 /* IQKeyboardManagerSwift-prefix.pch */, - 9ECBA7FB9DDFE22B535FF31A3A8B9D18 /* IQKeyboardManagerSwift-umbrella.h */, + 35E120A256610C03AEF293E8F53145EF /* GoogleAppMeasurement.framework */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardManagerSwift"; + name = Frameworks; sourceTree = ""; }; - 2497AFC5211EF577FF292B0B9598C2A5 /* Resources */ = { + 2785381B3DEB7C7D347D9514DD2963D4 /* Support Files */ = { isa = PBXGroup; children = ( - 7D46C4CBC22320C96408EC4F4132D48A /* IQKeyboardManager.bundle */, + FC32619D35801DD196B84F6E426924B0 /* GoogleToolboxForMac.modulemap */, + 91B34A6E8FCF5A637841C38BAC067ECA /* GoogleToolboxForMac.xcconfig */, + 85E3DBF8804D324FB37DF5B3B2702486 /* GoogleToolboxForMac-dummy.m */, + AC7CCD9A1B0623B31D1D182F3C75130F /* GoogleToolboxForMac-Info.plist */, + C36608B635BFE55860CFAA61DA40E8E0 /* GoogleToolboxForMac-prefix.pch */, + 58274F331D9C31E12572CBFC758DE15D /* GoogleToolboxForMac-umbrella.h */, ); - name = Resources; + name = "Support Files"; + path = "../Target Support Files/GoogleToolboxForMac"; sourceTree = ""; }; - 2725124BF3E15BA209548198DC933BFF /* Support Files */ = { + 29578E5FFE9819052FEFBB9DD680CF8C /* MarqueeLabel */ = { isa = PBXGroup; children = ( - CA4BB572D4C6DDF7D7CE543A86C06A18 /* nanopb.modulemap */, - 17E28A08FB4D1F9D788AAB1AD3609E6D /* nanopb.xcconfig */, - 66E3690C7FD0398FD29EB6C991B5B1C0 /* nanopb-dummy.m */, - 98185E26C4710B49AAA911D4AA1CA566 /* nanopb-Info.plist */, - 2223D0AE6CC3F4F4053E2927DC73722F /* nanopb-prefix.pch */, - 61DD4CB09F528723FA2F77683B488A43 /* nanopb-umbrella.h */, + F6123101DFE879D8BFFAF0F7DF550577 /* Support Files */, + 76718122F28E2012D8D4A0BD0519C0AE /* Swift */, ); - name = "Support Files"; - path = "../Target Support Files/nanopb"; + name = MarqueeLabel; + path = MarqueeLabel; sourceTree = ""; }; - 27F42BFAA88B5E94767B8EABB83A80DB /* Logger */ = { + 2AA4641AFBFA0B7ECD9A5D45F35504ED /* SwiftyJSON */ = { isa = PBXGroup; children = ( - 2D73EC5F143FCE92B2ACC19BDCBE94F2 /* GULLogger.h */, - 6FAF4B296DD8DD4F2E6016B09082E8CA /* GULLogger.m */, - 6AAEC6DA8A30ABC67667308E1B82823A /* GULLoggerLevel.h */, + 4C4FD4D6E0E23954AD93734D7C6F55F6 /* SwiftyJSON.swift */, + C827DB81CACDEE338F9D064BA038FC23 /* Support Files */, ); - name = Logger; + name = SwiftyJSON; + path = SwiftyJSON; sourceTree = ""; }; - 28D37B43E922FEEA3B8B2428E69DB92A /* Support Files */ = { + 32C7B272B82A9152642C495A3560B571 /* GoogleToolboxForMac */ = { isa = PBXGroup; children = ( - D575C43C31BBD7BB61348B5FE3B28275 /* Alamofire.modulemap */, - 8BC1AF659E265D6BDA211359BF90C42F /* Alamofire.xcconfig */, - 04F06448A244B8A7AF3286549D110F0C /* Alamofire-dummy.m */, - 9C566B75120E142B539E3CA212C2C67B /* Alamofire-Info.plist */, - 5E8F2ABA75A185557C51ABBD0D497E87 /* Alamofire-prefix.pch */, - 97F54FE5A1A4B8F9E1C5381792EB1B5E /* Alamofire-umbrella.h */, + A5161133C97717261CCF015B2100EC57 /* DebugUtils */, + E00F0C0B2CF3A513AB7237636FBCF1B2 /* Defines */, + 4219A14E073064C36502C4959E510EEB /* Logger */, + 142F989ED32A7F86CD5FFEEC3624C881 /* NSData+zlib */, + 1E21E3C6488B2479068896AE260FB7BF /* NSDictionary+URLArguments */, + ABDF0F45C3FD37F5BFAB5250EABA445B /* NSString+URLArguments */, + 2785381B3DEB7C7D347D9514DD2963D4 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Alamofire"; + name = GoogleToolboxForMac; + path = GoogleToolboxForMac; sourceTree = ""; }; - 2AFAF2E21EB4276B3BB84BA27BAF9175 /* MarqueeLabel */ = { + 348A56AABFDDED53D176983DAFF647F3 /* Support Files */ = { isa = PBXGroup; children = ( - F30ED89B48161D990E4034790B6C4C8C /* Support Files */, - 8FF52618DFD08BDC97012D535F5BE229 /* Swift */, + E821DF662710A7BA50E2390C820C8913 /* Firebase.xcconfig */, ); - name = MarqueeLabel; - path = MarqueeLabel; + name = "Support Files"; + path = "../Target Support Files/Firebase"; sourceTree = ""; }; - 2F49CB1D52670D6EE85EC4B76C3432DC /* FirebaseMLCommon */ = { + 37ACF64E50C0CB048DCBD56EE3E7A769 /* Support Files */ = { isa = PBXGroup; children = ( - 6683EEA3509EB1DF82786B9799B8439A /* Frameworks */, - 7DCD65BF35442D394DA26C177FB4DC9A /* Support Files */, + AB8C0A9D625E92ACEA873A6778C1AA0C /* Popover.modulemap */, + 822D9EF4AC2FE242E04C7422533D6D39 /* Popover.xcconfig */, + 3B40445679FCB9DC4084E9B3A02F6009 /* Popover-dummy.m */, + 8EEA64B570B8601FF0665E34904A4943 /* Popover-Info.plist */, + A9EBCEC49043982E9E59EE2A94399A16 /* Popover-prefix.pch */, + 4A1706557C0ACB34059F0E56A60181F7 /* Popover-umbrella.h */, ); - name = FirebaseMLCommon; - path = FirebaseMLCommon; + name = "Support Files"; + path = "../Target Support Files/Popover"; sourceTree = ""; }; - 305CDD4FDD4C78C2180F3632FE7B6886 /* Resources */ = { + 384506C98D880BD1C7580418718AE629 /* Support Files */ = { isa = PBXGroup; children = ( - 98236D24F4C2D5489CE42615E4A9643B /* region_proposal_text_detector_tflite_gray_quantized.bincfg */, - C3D54EFDF94E3155BABDA545BAE91F8F /* rpn_lstm_engine_tflite_latin.bincfg */, - B6D500047C134A1E297902BB665A9EA0 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite */, - 68FD584350B73339523DA1CCD877D829 /* tflite_lstm_recognizer_latin_0.3.bincfg */, - 831E43DE7649FDB604551056103BC769 /* tflite_lstm_recognizer_latin_0.3.class_lst */, - 0C09FA29FA108EAF03D24D768884DD97 /* tflite_lstm_recognizer_latin_0.3.conv_model */, - 6DF26784FB8C6754C21DBB3451ED7091 /* tflite_lstm_recognizer_latin_0.3.lstm_model */, + A6444B634D4C3FF9BAD16B2B3C50620F /* GoogleAppMeasurement.xcconfig */, ); - name = Resources; + name = "Support Files"; + path = "../Target Support Files/GoogleAppMeasurement"; sourceTree = ""; }; - 33D99EC31DB8F51FD3DB9E79044D419E /* GTMSessionFetcher */ = { + 3A82FA8B7BCD5C30CAAAC7B9ACC98386 /* GTMSessionFetcher */ = { isa = PBXGroup; children = ( - 35E4941E6EA97D153CBEDB7AAD9E075F /* Core */, - C3BE6DA71C790E3CE8DBB19E44B6DABE /* Full */, - D3A328DE1C503AC4136E2BD387B73EF4 /* Support Files */, + E7D54303F89BFAC036ED875B4985E57C /* Core */, + A7F44596C47DA2F10A4A6C4EB2A6DFA8 /* Full */, + 8172713FC683282426562D9526D5B4BC /* Support Files */, ); name = GTMSessionFetcher; path = GTMSessionFetcher; sourceTree = ""; }; - 35E4941E6EA97D153CBEDB7AAD9E075F /* Core */ = { + 3AB60A6A4D2F739C993F620AFE5918C6 /* Pods */ = { isa = PBXGroup; children = ( - F5583FD8431259BBBFC4A0FD717C024F /* GTMSessionFetcher.h */, - CBAE68482E86A52BA045CF3DC8C8C8B9 /* GTMSessionFetcher.m */, - ACEC420CD79D412150AF06E59E334878 /* GTMSessionFetcherLogging.h */, - 618C299967F1A6E8FCF71E5D837B7F33 /* GTMSessionFetcherLogging.m */, - E0CDA8B0C54AF79F72989D91CAC407BD /* GTMSessionFetcherService.h */, - 4CC9535E0DDDA7F09B836C700D523820 /* GTMSessionFetcherService.m */, - BAA39626F0C014A6D605CCD29D4C0FEC /* GTMSessionUploadFetcher.h */, - ECB98717847274411B1A41291CEB07A0 /* GTMSessionUploadFetcher.m */, + 80DD86801B2D2D27B5666FBB4AE43EA3 /* Alamofire */, + 9123E5268483E193747BC08F3C4A1E8E /* Cosmos */, + 031CE77526AC4B115CFC04E46FBFD91F /* Firebase */, + 12658655C6D59B781091BDC22535C198 /* FirebaseAnalytics */, + F6FC51A7A30731496DB91FCFD27D94A6 /* FirebaseCore */, + 44CB2E0F9DA2255303131A23F9A62240 /* FirebaseCoreDiagnostics */, + 749C9159C1F057B6BE43D86FBB31BABB /* FirebaseCrashlytics */, + 497B1F8359F0FDF1FD80B3600777262A /* FirebaseInstallations */, + 08F517F70D62B4B3B78CC48E3426F16E /* FirebaseInstanceID */, + 7BCE7D47615062056EBE9076438F20EE /* FirebaseMLCommon */, + CFFC22FCFA1035BE04692357CB8D7A09 /* FirebaseMLVision */, + 7559FC53141265B88DC709AE29549E55 /* FirebaseMLVisionTextModel */, + 23483021BA6FFEC49C53FDDF06B79E8A /* GoogleAPIClientForREST */, + F7814C4ED9E4841AA84474E00303D29B /* GoogleAppMeasurement */, + F46325F35BEB578539BD7AD71E833796 /* GoogleDataTransport */, + B863883E4C63950D3D98D3248489B2E4 /* GoogleDataTransportCCTSupport */, + 32C7B272B82A9152642C495A3560B571 /* GoogleToolboxForMac */, + E2F4659D060E0DFDE4B5CF0E1BC0D573 /* GoogleUtilities */, + 3A82FA8B7BCD5C30CAAAC7B9ACC98386 /* GTMSessionFetcher */, + 0CA983F80C10132A02CFF4BA8FB3CA18 /* IQKeyboardManagerSwift */, + 29578E5FFE9819052FEFBB9DD680CF8C /* MarqueeLabel */, + D3808F7FFB2B4F975A96DA963F29CEE3 /* nanopb */, + 84D470180D0A396DCC88B7E8AEFFE45E /* NotificationBannerSwift */, + EEAE5AD07D377EFF049CF5567D39DE8E /* Popover */, + 46B267F80F72DAD6D782259B28D38F9E /* PromisesObjC */, + 0C9A332425337602BDF66304A45B257E /* Protobuf */, + 108774AFFF16E39007F92E281173286B /* SDWebImage */, + F8496AA2944D615B349C2D7607EA25B0 /* SnapKit */, + 2AA4641AFBFA0B7ECD9A5D45F35504ED /* SwiftyJSON */, + F8E2F86C3A961F8E88124427976907CD /* UILoadControl */, ); - name = Core; + name = Pods; sourceTree = ""; }; - 39D699FDC87C160D0AFB7B0E1073C557 /* GoogleAPIClientForREST */ = { + 3BCE6607D7824D2FF67A86F6F4B1C4E9 /* Frameworks */ = { isa = PBXGroup; children = ( - 8788B41640692A6087D412BF0FE28399 /* Core */, - 5594A184D28F79FB13FE386B0EBC6358 /* Support Files */, - 1A8541292BAE4D46B2DDE39A52F236C9 /* Vision */, + 1A953132A3E543C9634E362AA09C1E6E /* FBLPromises.framework */, + FADDF66918009AB6EF57D016455E3AC6 /* GTMSessionFetcher.framework */, + B8956CF579CF6834C76ABCEC5EA8DFB4 /* MarqueeLabel.framework */, + CEEAACB4E59FB1E322EAC766AA494625 /* SnapKit.framework */, + DF7252983EDBB90ACD76EFEE47862A1F /* iOS */, ); - name = GoogleAPIClientForREST; - path = GoogleAPIClientForREST; + name = Frameworks; sourceTree = ""; }; - 3C949DBF3AE4D77DED2B6089B76AC7E7 /* encode */ = { + 3E1722F1B63948C766A94332BFAF6343 /* Frameworks */ = { isa = PBXGroup; children = ( + EAB757D2163E4938ED01A06AF2CCB4C2 /* FIRAnalyticsConnector.framework */, + 9700E3EC2C014CB28C60376E67FB047C /* FirebaseAnalytics.framework */, ); - name = encode; + name = Frameworks; sourceTree = ""; }; - 3DEE5899F7A7FD826311421D6F97FCE2 /* Support Files */ = { + 3FEDE491C5AB6AD3115B5F4ED42654E2 /* AppDelegateSwizzler */ = { isa = PBXGroup; children = ( - B4FE5C4697F12AD7A63E2A150E567939 /* FirebaseCrashlytics.modulemap */, - 11DCBC916CDC08D9DD43E02774AC44EB /* FirebaseCrashlytics.xcconfig */, - 7B85845D125B95C06F5ACC48522E1A5F /* FirebaseCrashlytics-dummy.m */, - 81DBB8D1969154B49F982A988779DE17 /* FirebaseCrashlytics-Info.plist */, - 345FB2309483C07479DE27C9E89EC4C1 /* FirebaseCrashlytics-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/FirebaseCrashlytics"; + 46576E3F63E4162629160135C4364BA6 /* GULAppDelegateSwizzler.h */, + EB1DFEEE962A97F257986F5D6F7BFBE5 /* GULAppDelegateSwizzler.m */, + 0C4B0E1C9DC68D3AFB51CDB5A332B408 /* GULAppDelegateSwizzler_Private.h */, + 478E0CC6F061331C1F4728013EB08612 /* GULApplication.h */, + 520BBFA92E20D1F43B049DE5A0DA13B2 /* GULLoggerCodes.h */, + C76FCBCFAA8EDEEB469261D73B608719 /* GULSceneDelegateSwizzler.h */, + C16C9A398024A0F0FEE442411FA99832 /* GULSceneDelegateSwizzler.m */, + D5C86AB66DA041F43C4AD5F87860595B /* GULSceneDelegateSwizzler_Private.h */, + ); + name = AppDelegateSwizzler; sourceTree = ""; }; - 4CF4B2057ECD57E2E8DD8B3B98101BD5 /* Core */ = { + 4219A14E073064C36502C4959E510EEB /* Logger */ = { isa = PBXGroup; children = ( - AC598886E99330152E424A86844474BB /* NSButton+WebCache.h */, - 1C437CC3933CE12ACEBF5AB409E2111E /* NSButton+WebCache.m */, - 3654A8B96ED0BB5746E53E053911C9B5 /* NSData+ImageContentType.h */, - 0D04EDA1D9D114619986D2421B288D64 /* NSData+ImageContentType.m */, - B6EBCB5E6E4BE058CD2717A63FC299FB /* NSImage+WebCache.h */, - A141289FC006435FE93B0D1E9E71D109 /* NSImage+WebCache.m */, - 5427948B7BFDD3EB15A59316F79F2D91 /* SDAnimatedImageRep.h */, - 531F005DA711676D4F8C17E30FFC44DD /* SDAnimatedImageRep.m */, - 4FD3A6E4EC0144E06EA6278F70BCC7C5 /* SDImageCache.h */, - 5E3CA8F2835E754B24955AEFF1EBD029 /* SDImageCache.m */, - BE09DB0E5396BBBF34BE96A7DDA3B953 /* SDImageCacheConfig.h */, - 656CCD3D643167FD5EF9E7AD15E31F41 /* SDImageCacheConfig.m */, - 4D646327442F61417544021A8A7B75D9 /* SDWebImageCoder.h */, - 24FEEC4F01969259F0DFF7C0AE37E300 /* SDWebImageCoder.m */, - DB0A649CF81E2DC0D69EE64072D4667F /* SDWebImageCoderHelper.h */, - F2D583D297D3BFBB8DFF2B8FC57CF055 /* SDWebImageCoderHelper.m */, - 288942D3FB3AAC7BEF6D5EF82B17F8E1 /* SDWebImageCodersManager.h */, - 2D00788B11B20C5252B257AF56EE17CE /* SDWebImageCodersManager.m */, - 400ABB1ACE6D802781D5E8D13DC991BE /* SDWebImageCompat.h */, - 8D91BE52BABDD4C09275748EC35973D2 /* SDWebImageCompat.m */, - DCAB042B1642241D956DAA1BF7AE362A /* SDWebImageDownloader.h */, - 104D5DA6913A855FB4AFC3E13DDB04FE /* SDWebImageDownloader.m */, - 3AE8D11AE60F0E1987211B8C3C234036 /* SDWebImageDownloaderOperation.h */, - 1336A0B9C0B72881F125CAF60429A5B0 /* SDWebImageDownloaderOperation.m */, - A98092A9113418AB18B8AF889D7EA252 /* SDWebImageFrame.h */, - 7F23B6DABE4CEBC67FA0DB441CD22EAC /* SDWebImageFrame.m */, - BF37CEDA5CAF31E771E0C7176D3009E0 /* SDWebImageGIFCoder.h */, - 56A4314D9243DC8ABEBC25790C468BA8 /* SDWebImageGIFCoder.m */, - D07B83A5A7F388A584D3D9EF72F60C8B /* SDWebImageImageIOCoder.h */, - 92FC9F27DE1638BDBFF6F31E2DA1FA89 /* SDWebImageImageIOCoder.m */, - 5A75EC13CF00DBD266B1CAD2E97BF5E7 /* SDWebImageManager.h */, - 7372FE29EB5855DF28798ED1C1FF2B80 /* SDWebImageManager.m */, - C5E24EED8B8003A61F485263C9A9D8B7 /* SDWebImageOperation.h */, - DD4356712EA57454D671CEE4FB4B02AC /* SDWebImagePrefetcher.h */, - DD6C61BAF694527111C893EBBB17D700 /* SDWebImagePrefetcher.m */, - B4061ABA17485F8A8FAD765E5502AF61 /* SDWebImageTransition.h */, - F59F320403A7F3B89B38810E1276A05B /* SDWebImageTransition.m */, - 90E1BA661379B9F206BCFEE1AEC17609 /* UIButton+WebCache.h */, - 914ED78B4E241912559F4C7A74EE6943 /* UIButton+WebCache.m */, - ACF84AC422BD6301FEA8E64ABDC2C6DF /* UIImage+ForceDecode.h */, - F3B885D3937628B2E4E09FA2AF0AD2ED /* UIImage+ForceDecode.m */, - 624FD51B55946984B8813437A8991010 /* UIImage+GIF.h */, - 588B89F3870A52C8FB4C2501B86E38FD /* UIImage+GIF.m */, - 510C9D583B30469E2A6C9B3C354AE31E /* UIImage+MultiFormat.h */, - 11E74B1E148A37C349FF1E2100145370 /* UIImage+MultiFormat.m */, - DC7422611F8ABDA7C28CB5CB40647738 /* UIImageView+HighlightedWebCache.h */, - 98A1E9980FEA064D9A26BE5F8C8ABA7C /* UIImageView+HighlightedWebCache.m */, - 21F3D81A3DECEC5F5BF291ECEB910C63 /* UIImageView+WebCache.h */, - 868F3AAB49310795C5516AA3D75236B6 /* UIImageView+WebCache.m */, - FF6E8D7150F767DB43AE4F899E9C9F7A /* UIView+WebCache.h */, - 23C8281966B9F5CEFFDBAD860A19B167 /* UIView+WebCache.m */, - A1C896805A7FC4595FD5D7F32CAD03FB /* UIView+WebCacheOperation.h */, - 1F5199404C80F781F8D73A1512C4079B /* UIView+WebCacheOperation.m */, + 4538A4E1EFDE82B3DBB74656B938DD93 /* GTMLogger.h */, + E44F3444E3ADC3C5862E1BF3F7A510E0 /* GTMLogger.m */, ); - name = Core; + name = Logger; sourceTree = ""; }; - 4D1BA6A29D4DB342EFD952C3577D26AA /* FirebaseCore */ = { + 427D025CC6D7C4C1E358B00C8C4FA9F4 /* Frameworks */ = { isa = PBXGroup; children = ( - D5D8BFBE5313ABA4DAC213A1218F092A /* FIRAnalyticsConfiguration.h */, - 5CA4BBFEABBCEFB601499A9A6777F28C /* FIRAnalyticsConfiguration.m */, - 53DDE4B27ED9B380105726BA2E553279 /* FIRApp.h */, - D76D908C64B4D3331D7C42333FEFC67D /* FIRApp.m */, - 18120D48612929C8BC286B99E0D14BD4 /* FIRAppAssociationRegistration.h */, - BDF7AA1E0A01F0DCDDBA6EE564D3F54D /* FIRAppAssociationRegistration.m */, - D18CA124D9017FEEA10DAAFDC857DF1D /* FIRAppInternal.h */, - C292D349E71DD4301764B8C6D030B468 /* FIRBundleUtil.h */, - BC2EE7BCBA8C6B977095F140F50A3D03 /* FIRBundleUtil.m */, - F2BBF9E09711C1A7DCADDB80E1CE945D /* FIRComponent.h */, - 3F23B3647BB86F9C6180FBF2E8BE9E0A /* FIRComponent.m */, - 2C33BE09CFBFAF580CF62052631DCC1C /* FIRComponentContainer.h */, - C68F87057CC5E82EE0E65DF30B52F4DE /* FIRComponentContainer.m */, - B538FD1F3DB341C24820175F8DA452E2 /* FIRComponentContainerInternal.h */, - C933DB82BF8D22E502795AFA968739F0 /* FIRComponentType.h */, - 364C9A63D8CC30BE0A1C8DF24AF8345E /* FIRComponentType.m */, - C334F1FC2C14A4F10D1460C07BF157A2 /* FIRConfiguration.h */, - 71645F65A5978FF9D30140D6C2A4B52D /* FIRConfiguration.m */, - 623894999D2C7A036706ACD485E612AA /* FIRConfigurationInternal.h */, - D514740650A34422209B0B01A550AD74 /* FIRCoreDiagnosticsConnector.h */, - 1F8D070F2960435F822C62AF23195C2E /* FIRCoreDiagnosticsConnector.m */, - DB12EEF880A46EB1CA7FD05A685E614C /* FIRDependency.h */, - B6B5621C660EC1234710268B631E1908 /* FIRDependency.m */, - 2D27E858B1471D4A68AB5376727440BE /* FIRDiagnosticsData.h */, - D3AC6A181FC59E47B0D65021B15BFFD8 /* FIRDiagnosticsData.m */, - 573E43AE4613B19B918E0F1953000143 /* FirebaseCore.h */, - 78114B0FFAE0D4F133E69DE777245A5A /* FIRErrorCode.h */, - A67523113508377D071B36843AA3A10D /* FIRErrors.h */, - AAFF4BD5723500231CF6B5032823A139 /* FIRErrors.m */, - 3875EA8066E95C3BE36E11E403BC5E70 /* FIRHeartbeatInfo.h */, - 45E580ADF5E02AAA30BB60908DDEAF51 /* FIRHeartbeatInfo.m */, - FD73CD3CCC3045D3727682E43D99ACA1 /* FIRLibrary.h */, - 0A5C4C1097A6ADDAC32D2E8747C6673B /* FIRLogger.h */, - 7450D75F3BA9518DF41D8CA7F5FFCFA9 /* FIRLogger.m */, - 3D7DBD737973798A2F07D83B523D3876 /* FIRLoggerLevel.h */, - 69F59A55FC55876146A92EBB661C9780 /* FIROptions.h */, - 3821A2F76DB69CE7FED29D86A0DDF9D6 /* FIROptions.m */, - D38ED208B2DE52F4CDD0D0400572507F /* FIROptionsInternal.h */, - 5D1D8F44E421E96CF0BC6CE63C3EAEB5 /* FIRVersion.h */, - 2D44413BA579E2038C70A2E903A27C8B /* FIRVersion.m */, - 07EF2FDC3556643E867FEE3B6FA7EB09 /* Support Files */, + 2B33CC9195CE4F71414BB45EF6D46A48 /* FirebaseMLVisionTextModel.framework */, ); - name = FirebaseCore; - path = FirebaseCore; + name = Frameworks; sourceTree = ""; }; - 51A82BEBAE6E3DD6C543B7297C2D6060 /* Defines */ = { + 44CB2E0F9DA2255303131A23F9A62240 /* FirebaseCoreDiagnostics */ = { isa = PBXGroup; children = ( - 786ADC128BB9947E7C7C6F103069649B /* GTMDefines.h */, + A81BC0A1802671FFDCEB6766C358F159 /* FIRCoreDiagnostics.m */, + DB2BFA70F9D2B2046A1D26799BD9C725 /* FIRCoreDiagnosticsData.h */, + 2B7BAC5079D329FDC111CCE56A017D51 /* FIRCoreDiagnosticsInterop.h */, + F2E0FCBF4DD92E8481E3D1C0489DAF55 /* firebasecore.nanopb.c */, + BDDDC0609E2C2399052E6A816A1F02C4 /* firebasecore.nanopb.h */, + D4273B7FC1C3C57151A8F37ACD0A94BB /* Support Files */, ); - name = Defines; + name = FirebaseCoreDiagnostics; + path = FirebaseCoreDiagnostics; sourceTree = ""; }; - 5253214A9252A70D76FAA70FFBA3C3C3 /* NotificationBannerSwift */ = { + 46B267F80F72DAD6D782259B28D38F9E /* PromisesObjC */ = { isa = PBXGroup; children = ( - EFF838BA3C5FDEBC9CF2F0C570B06F68 /* BannerColors.swift */, - 60E2D94C21549355CEFD27780CBB8680 /* BannerHapticGenerator.swift */, - 1687D33C0EBD122C338051DF47CBE529 /* BannerPositionFrame.swift */, - C33FF87380DCB915F23ADBCD48E56466 /* BannerStyle.swift */, - 55D42430D30B26A953FCFCCAB4B3EF4B /* BaseNotificationBanner.swift */, - 63C5FA1A1609428DAFA8B42781EBC76B /* NotificationBanner.swift */, - F46454C95FB03CAD1BA706961BE72319 /* NotificationBannerQueue.swift */, - 436F208E80310B173AE4CCD8593AF1BA /* NotificationBannerUtilities.swift */, - 25DF81714902CCBD69940F115076B5A1 /* StatusBarNotificationBanner.swift */, - 959604B76221C990D81C520964E6FE7E /* Support Files */, + 506C307DB96C77F25F38513B80BBE1E4 /* FBLPromise.h */, + 3F2F46394EEAECF92F8610FE459955E2 /* FBLPromise.m */, + B2D4CB67FC8B41EE8F0248D7B8FB8DAF /* FBLPromise+All.h */, + 2F6BA76D8F6D0E6233D4DBC94569CEA8 /* FBLPromise+All.m */, + 2B3391BB00CBE605D3C345A721C9E149 /* FBLPromise+Always.h */, + 6343586AEAB345ABBEFC1C0F02074DA6 /* FBLPromise+Always.m */, + 43229DACBFD4F93A4D69544035F4105D /* FBLPromise+Any.h */, + E6CB2FE9A73574FB566DDFC4976EAC0C /* FBLPromise+Any.m */, + E5BB360882D1E8097C2B99C4F7BAFD89 /* FBLPromise+Async.h */, + 825120C5B708819A5E8CA6FEB03EA54D /* FBLPromise+Async.m */, + 9D3499ADEFE2D73B02FC8256C8701E25 /* FBLPromise+Await.h */, + 058509F6BFE8393216E1B2D8BF119A37 /* FBLPromise+Await.m */, + 7F48CD4A675CEB1A55561E2A3439B214 /* FBLPromise+Catch.h */, + C368C4AF1BAE18F2438F780F28AC7CBB /* FBLPromise+Catch.m */, + DCF6E8B5148A695EE74ED2CC323747E0 /* FBLPromise+Delay.h */, + 613E7047E63294E42126DF366B0A062F /* FBLPromise+Delay.m */, + 9B396839D10A8ED82F9D975D557A05DC /* FBLPromise+Do.h */, + 712ACD10E77716CCDEF502846A0E93A8 /* FBLPromise+Do.m */, + 63C6830F4CD02F7D0DB40621054CC1ED /* FBLPromise+Race.h */, + 76C9705A0AE5E2DFEFFD632D7D2FCE82 /* FBLPromise+Race.m */, + 3226018FD0846D35B866D592F403BF46 /* FBLPromise+Recover.h */, + 2A95FCCFA2DD142994A1AD2D9B212760 /* FBLPromise+Recover.m */, + DB2BB8C1E60087FB89C2D8281A9EEE25 /* FBLPromise+Reduce.h */, + 32A3EAADED365A5D093DF124F6CEC89B /* FBLPromise+Reduce.m */, + 1A7E765E557A0A9DEE90E31AE71B25FE /* FBLPromise+Retry.h */, + D661F110E5BEF0775276C4A3A9E0D7E8 /* FBLPromise+Retry.m */, + 0AF43230F241E5F8988A267472FF74F5 /* FBLPromise+Testing.h */, + 4D30AC7A1FB44A63106178B50916B231 /* FBLPromise+Testing.m */, + 5B13E96214788D7026649E291319901F /* FBLPromise+Then.h */, + B0201621FFB18E55FBF6AA5605CE8626 /* FBLPromise+Then.m */, + DC16E4F27681F35EEDF46A2DFA567022 /* FBLPromise+Timeout.h */, + 6E2A9B8190FCFF248D000813E9C3A884 /* FBLPromise+Timeout.m */, + 246B1E9BF647DAA3DABD8B123FD387CF /* FBLPromise+Validate.h */, + 8711D439E388C79B95080F5203C3691E /* FBLPromise+Validate.m */, + 4C91A263F3D99FA14AB1BAB66206D2AF /* FBLPromise+Wrap.h */, + 338455B58D8A2AB9B4157537A4BD82F5 /* FBLPromise+Wrap.m */, + 810EA27159569FC56E8E1D02AA63AAA9 /* FBLPromiseError.h */, + 30D5BD7B39C59BCDABB6364FA88BCE0F /* FBLPromiseError.m */, + DCD26E805F619E9AFF00D6F8316EF5B0 /* FBLPromisePrivate.h */, + 981BA27C443D0904CCD78DC91BB6BF4C /* FBLPromises.h */, + 011D299165BFC0EC5A679EC5739CCF35 /* Support Files */, ); - name = NotificationBannerSwift; - path = NotificationBannerSwift; + name = PromisesObjC; + path = PromisesObjC; sourceTree = ""; }; - 5594A184D28F79FB13FE386B0EBC6358 /* Support Files */ = { + 497B1F8359F0FDF1FD80B3600777262A /* FirebaseInstallations */ = { isa = PBXGroup; children = ( - 5B7450C1B0D17672317D1D6626953166 /* GoogleAPIClientForREST.modulemap */, - 2788AA39E038004180BDDEEA6F325D15 /* GoogleAPIClientForREST.xcconfig */, - 0DD1755BC1F5C17BF3913ADB09AE34C8 /* GoogleAPIClientForREST-dummy.m */, - 92F0AC22D728FD7B9B1940CDF0A11257 /* GoogleAPIClientForREST-Info.plist */, - 52F8DAB659A9CF1694D3FD754978A49E /* GoogleAPIClientForREST-prefix.pch */, - 0BA77E8D8E59C848D8DBDDDA1DB84F37 /* GoogleAPIClientForREST-umbrella.h */, + B5FC07BD00B9FB747E527E791B798460 /* FIRAppInternal.h */, + 5B49FCB0ADBBF18511895922E5612A57 /* FIRComponent.h */, + D9A647508E407F13524D71D613C5A122 /* FIRComponentContainer.h */, + 66C3CC76B8449C2B32F2B349CC265AF3 /* FIRComponentType.h */, + 474C46AF4410AFC5064926E90E1A48A2 /* FIRCoreDiagnosticsConnector.h */, + F4D7D07D3755EECAFC2BA94C4C7C410B /* FIRDependency.h */, + 6119744C12C94850162714DF33A7AA62 /* FirebaseCoreInternal.h */, + D1FE78121FD66254B00C9AD2C41C377A /* FirebaseInstallations.h */, + 00DE726E4E6B60A310BEC866DD6F35F7 /* FIRErrorCode.h */, + 2A555F2F8B8AB6D50F22ED7F53CDF9B4 /* FIRErrors.h */, + B23CB0E543EF08826E83C2A1E39BFE84 /* FIRHeartbeatInfo.h */, + D9AD27700FFD6A40E3C40164DA2D3568 /* FIRInstallations.h */, + 6933569E8134990F05D89398BE58063C /* FIRInstallations.m */, + 25A113C0F56A83211D33B7BD1C8F7F7E /* FIRInstallationsAPIService.h */, + 012B7B072C8AF52B9B6F688EE6295564 /* FIRInstallationsAPIService.m */, + A8F919B1A184845E1AB792C8C642FB48 /* FIRInstallationsAuthTokenResult.h */, + 6E2045D29D643A22259667AE936A60CF /* FIRInstallationsAuthTokenResult.m */, + E983CD6F7A6DBB1038852CD5552A0B30 /* FIRInstallationsAuthTokenResultInternal.h */, + 91A288EBF5C19454FD6F12A6D197B803 /* FIRInstallationsErrors.h */, + C2703B96BBA49784D661D07D07EFE838 /* FIRInstallationsErrorUtil.h */, + 97DE476864BDD426BDB377F4B66C5BAF /* FIRInstallationsErrorUtil.m */, + 04B8266C7733E1BFF98208265854DE17 /* FIRInstallationsHTTPError.h */, + 98A0482755751B5232B93DC7A5CAE77C /* FIRInstallationsHTTPError.m */, + CC2B48EB97EE43AF4BCAFAF314327ACD /* FIRInstallationsIDController.h */, + A6EEEC209D10B9E73FE93DBEB46FE10A /* FIRInstallationsIDController.m */, + 9828298B491FE73D4B2D4FBD8F947EA2 /* FIRInstallationsIIDStore.h */, + 78B17A00672F9BF7F5929FDD7C32EBC3 /* FIRInstallationsIIDStore.m */, + 54DBEF85F95CAF274E566C5EF8E7D2FE /* FIRInstallationsIIDTokenStore.h */, + 3C980490541BBD694A601982434D82E9 /* FIRInstallationsIIDTokenStore.m */, + 917C9095F5816662AFF0746F13A97D50 /* FIRInstallationsItem.h */, + 3194F4D4194CDD2B9BCC4A4D19BE80FE /* FIRInstallationsItem.m */, + F154B7AC3C124E7A2107A0B11EC1BFA5 /* FIRInstallationsItem+RegisterInstallationAPI.h */, + 99A8C39526289748531691F234EB543D /* FIRInstallationsItem+RegisterInstallationAPI.m */, + 5E48C7D094D98245893E7F2378168AE2 /* FIRInstallationsLogger.h */, + 351DCDD88F92BFCA28E942CD174FFC26 /* FIRInstallationsLogger.m */, + 8D02A4DAB91A7D18658CC7BEA453853B /* FIRInstallationsSingleOperationPromiseCache.h */, + 2DAD5FEB39636F27CE25313B8CB76247 /* FIRInstallationsSingleOperationPromiseCache.m */, + 33632E87B65B3693D9401FA93859540A /* FIRInstallationsStatus.h */, + 95F2C2DEDF23157DD4BAC75EB7007BC8 /* FIRInstallationsStore.h */, + C99FB980F9823AC715AF974425023B16 /* FIRInstallationsStore.m */, + D02F7687CCC6F6A2772F9C0CE8D9D047 /* FIRInstallationsStoredAuthToken.h */, + 63EECD34A42917661B9B236E26CBBF37 /* FIRInstallationsStoredAuthToken.m */, + DBE88F4E616D288AED561D8E32CF76F6 /* FIRInstallationsStoredItem.h */, + FB7B7D1AA9ECAD705F3D1103AC4DE86E /* FIRInstallationsStoredItem.m */, + 09F85045316C1F9717FA620B775E3098 /* FIRInstallationsVersion.h */, + CA48374AFE7501C00683F27FFDEF98FF /* FIRInstallationsVersion.m */, + 23347178C70E04D5133F478E0C1F89E1 /* FIRLibrary.h */, + AF69B17357D0B60659AAA0BCBD6C18B9 /* FIRLogger.h */, + 986228CEF2013BB0B61F0696573D49C3 /* FIROptionsInternal.h */, + 912C244865F60B1D19BB6F07E4272C5F /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleAPIClientForREST"; + name = FirebaseInstallations; + path = FirebaseInstallations; sourceTree = ""; }; - 599C56ABEFAB8DB5D928FEDB1195B240 /* Popover */ = { + 4A0ACB976936A194A02807D90E7B4B55 /* Support Files */ = { isa = PBXGroup; children = ( - 905D80979058E1C711F972E88EC9F511 /* Popover.swift */, - F4233D82750315160B05F9643850E21F /* Support Files */, + ADD0631B7ACA3830BBF4DD70A5C75C51 /* Cosmos.modulemap */, + D435FF46BAF7B2A3A6F394B2334BC853 /* Cosmos.xcconfig */, + 76549F1AD8969CC7F609E36419CFFD46 /* Cosmos-dummy.m */, + 5EB908590222A5ED62F253EE07352875 /* Cosmos-Info.plist */, + 220A6F99B0CFCAB5A40FD4C865F680CB /* Cosmos-prefix.pch */, + 27BE3A733B9543E81E022A89F6FFF3DB /* Cosmos-umbrella.h */, ); - name = Popover; - path = Popover; + name = "Support Files"; + path = "../Target Support Files/Cosmos"; sourceTree = ""; }; - 59B03F62431F17348710FE1CAE2EAD5F /* decode */ = { + 5A047375BE336284FEE2FCBEA397F1B3 /* decode */ = { isa = PBXGroup; children = ( ); name = decode; sourceTree = ""; }; - 5F7B685414E89325A49EB447B8A69F4C /* Environment */ = { + 62CD35991A8BF49B04D8385681ABB43C /* Support Files */ = { isa = PBXGroup; children = ( - 4A49A82159AE994FA117DD2A224D363B /* GULAppEnvironmentUtil.h */, - A4BAEF8FCE597E3D9CF7201E4755C37C /* GULAppEnvironmentUtil.m */, - 8DDDCFD93630C1EB3C92D8D5304E19A3 /* GULHeartbeatDateStorage.h */, - B1E3D38D23D714B84CA8B20E7E452442 /* GULHeartbeatDateStorage.m */, - A6416578839E074D2575C0247F57A5D1 /* GULSecureCoding.h */, - 4FB21129D44CBF1D93AD501384099E83 /* GULSecureCoding.m */, + 7BD5234C1C948CC3B0378BB5A6F7693B /* IQKeyboardManagerSwift.modulemap */, + 8C9B0DD0FF123C5BD84926D32C0054C7 /* IQKeyboardManagerSwift.xcconfig */, + 494033EBF19E5FDACED10052E4AAD58D /* IQKeyboardManagerSwift-dummy.m */, + 89D3C208CD8162073B802DE84E16A0A8 /* IQKeyboardManagerSwift-Info.plist */, + AE0C8836C6821B23714C7C8D0CFCC3A1 /* IQKeyboardManagerSwift-prefix.pch */, + B9BA538EF0A675F87DA279DE2865ED04 /* IQKeyboardManagerSwift-umbrella.h */, ); - name = Environment; + name = "Support Files"; + path = "../Target Support Files/IQKeyboardManagerSwift"; sourceTree = ""; }; - 60B2E839303CF7AFB1DF76E61A3C70B9 /* GoogleUtilities */ = { + 7352E6D1A1BF57776B67D33535719412 /* Network */ = { isa = PBXGroup; children = ( - 5F7B685414E89325A49EB447B8A69F4C /* Environment */, - 27F42BFAA88B5E94767B8EABB83A80DB /* Logger */, - 67ED06DD5C0650D71370789993D94108 /* Support Files */, - 72101B0F02224A0D630BC9DB73DFF724 /* UserDefaults */, - ); - name = GoogleUtilities; - path = GoogleUtilities; + BA36FEDD104E5F0CA64A4C376FF2148A /* GULMutableDictionary.h */, + AD72DF0AB7CA22F97B2B2CBD70034903 /* GULMutableDictionary.m */, + D27FDC8C66581F6C12A0E72B0DA64D91 /* GULNetwork.h */, + DBC9B5B4E2508B3EDB80A64BF097AA84 /* GULNetwork.m */, + 468A81285B1D6D97360FB27FB9A87396 /* GULNetworkConstants.h */, + 1B099F2879DF5A05B13BFD58E7708F83 /* GULNetworkConstants.m */, + 01EDE9B311CD2D4884F6DD85A225D330 /* GULNetworkLoggerProtocol.h */, + 960F38F4C2770022D9FC931ABC7D8AFD /* GULNetworkMessageCode.h */, + 0129FFECB5BE897E20ED8B4C23A19F4F /* GULNetworkURLSession.h */, + 14B8035530847BA363A559EA8C21A565 /* GULNetworkURLSession.m */, + ); + name = Network; sourceTree = ""; }; - 63750EA6F8F2A9EC3829E0D11CEEAAF0 /* Support Files */ = { + 749C9159C1F057B6BE43D86FBB31BABB /* FirebaseCrashlytics */ = { isa = PBXGroup; children = ( - D1409CA7C52A52B5A88D28715E442E70 /* PromisesObjC.modulemap */, - C09A79E74A7FB16A854BCADFE204ABD2 /* PromisesObjC.xcconfig */, - B2324379A88A90B566F9C2B5DC27D5A8 /* PromisesObjC-dummy.m */, - 8CE1AEC806C03036BEB874EA60AC31DB /* PromisesObjC-Info.plist */, - 338F4077203DEEE3583D9A6F735B5FA8 /* PromisesObjC-umbrella.h */, + 73862593A86A7047265221E8F359D1A0 /* crashlytics.nanopb.c */, + F670E83C6CB2B67137E070B3D0C25512 /* crashlytics.nanopb.h */, + E4C174D5D686676E2599C18573BF84F8 /* dwarf.h */, + 59D220520457C63E7FC5311B5DCE2639 /* FIRAEvent.h */, + 779245CB2D509200D9C7F80957CD00AF /* FIRAEvent+Internal.h */, + D9086528614205DE38D93BFA4F35A8B2 /* FIRAEvent+Internal.m */, + FCD00C1A1990994AF5696D9F392C070E /* FIRAnalyticsInterop.h */, + 50D713212B5BED635C60AB0F21889877 /* FIRAnalyticsInteropListener.h */, + 6EF35F5EFBD3264FD3B07F711A150627 /* FIRAppInternal.h */, + 052373579DC6B1FF399E4BF9E3BDEBEE /* FIRAValue.h */, + 8B1FEA138966D673C514A5CB0D1E3655 /* FIRCLSAllocate.c */, + A96A4552CDDA8E166C9BD1639FC8850D /* FIRCLSAllocate.h */, + 01262491E1FC010EF0D97FA1996DA841 /* FIRCLSApplication.h */, + 24C066E48B587792E50A996B197E5BFA /* FIRCLSApplication.m */, + B1CBBC1D5EC4F07D848640D5F7562D93 /* FIRCLSApplicationIdentifierModel.h */, + 9BAA2085B3F3F2C5FF3A6A63E07CCC9B /* FIRCLSApplicationIdentifierModel.m */, + C27518B9F8E142F75D550A5AE2A6949E /* FIRCLSAsyncOperation.h */, + C0F53E584067D52CC1FE58031A8A490B /* FIRCLSAsyncOperation.m */, + F164DF0E7AC44316CDBA4A163407EA66 /* FIRCLSAsyncOperation_Private.h */, + B3A76A7453555132D0D27D17FBF2BF81 /* FIRCLSBinaryImage.h */, + 6D9A539737789CC4F66872C0A8D9973B /* FIRCLSBinaryImage.m */, + 76414CC873057FD476FDD94C2DB11D64 /* FIRCLSByteUtility.h */, + 1256F0F46F7145F1D3A9033ABDEDCE38 /* FIRCLSByteUtility.m */, + 032072736174D7F2E85C5BA43B10AC9E /* FIRCLSCodeMapping.h */, + 5CB67EAC5BE239BE3E3BF3F5A46C4E6D /* FIRCLSCodeMapping.m */, + DB8525A600833663569668515EE11E1F /* FIRCLSCompactUnwind.c */, + 8CC65978AA5DDA97A6A1AD1217EEC800 /* FIRCLSCompactUnwind.h */, + E5C3202E468FAC0374262B50DB0CEE0D /* FIRCLSCompactUnwind_Private.h */, + F964152A57EF9726875C6BCB81E63273 /* FIRCLSCompoundOperation.h */, + EE7193FF0595F3EE2D48FF0B9BC086C7 /* FIRCLSCompoundOperation.m */, + A7C3964BB83A9C89ACDCBC4EF2A78963 /* FIRCLSConstants.h */, + 876D04D2F8020D7D2975D648E7BD721B /* FIRCLSConstants.m */, + E0742B185471D0220647A822BD83C141 /* FIRCLSContext.h */, + 774913319449F64C85BBC4F9713156ED /* FIRCLSContext.m */, + 6A06982F049543DAEBA8CE9723CA9EEC /* FIRCLSCrashedMarkerFile.c */, + 95B87608DF5AA19322199C8F3697AA5C /* FIRCLSCrashedMarkerFile.h */, + 4034D36FB86CCC529959CE4D3396FF85 /* FIRCLSDataCollectionArbiter.h */, + 874ABFA13CB2F2DEA2E80CCDA7691BF2 /* FIRCLSDataCollectionArbiter.m */, + BE5E9CC51EAEBD9F4FF97CAA9CA30B49 /* FIRCLSDataCollectionToken.h */, + 40F8CCF71FE09CBACD986376A00E72D2 /* FIRCLSDataCollectionToken.m */, + 5B38628D423864B7C8751CDFF74B6964 /* FIRCLSDataParsing.c */, + DCACB47FDF1B319F6E056FDD9985654F /* FIRCLSDataParsing.h */, + F34DB17D07BB8C151D0A0516BE6D1E34 /* FIRCLSDefines.h */, + D594AD094BC677312545ACF74D5C97A6 /* FIRCLSDemangleOperation.h */, + 82AEC7673FE2BE0C66FE5785EEF5D16D /* FIRCLSDemangleOperation.mm */, + EE6521A394E8262D5CD205F34D6AE4EC /* FIRCLSDownloadAndSaveSettingsOperation.h */, + CE76024C0AAD301092B3FBE1E329F758 /* FIRCLSDownloadAndSaveSettingsOperation.m */, + FA3FFD80553357328CEF5DA8770AA84A /* FIRCLSdSYM.h */, + C1770C5FC3AC59BB9A0452DAEC111D36 /* FIRCLSdSYM.m */, + 0E0948EC73F7E32F0DA0FF1DAA2FFDC0 /* FIRCLSDwarfExpressionMachine.c */, + 5148106E51E14CDF6F45C39224BC5E97 /* FIRCLSDwarfExpressionMachine.h */, + A2C53131DF268AFF123BBF305BA6EADF /* FIRCLSDwarfUnwind.c */, + 1FC7EA4DA5E3DCC2BAE07A6FDE2F12B8 /* FIRCLSDwarfUnwind.h */, + E1C979B5B1B6F24F31C10B3A2DE7FB92 /* FIRCLSDwarfUnwindRegisters.h */, + 665478380DA3CC04FD4F15E33C474936 /* FIRCLSException.h */, + 590DFE5AF4CE25711548E5DB6B16D0BC /* FIRCLSException.mm */, + A06AE7D1337E19D55B9359EEEAF3B69F /* FIRCLSExecutionIdentifierModel.h */, + 53C042F7B96B2DF7B0C6E8480AD23501 /* FIRCLSExecutionIdentifierModel.m */, + F460FA308E7A4680AF1A2F1728D34CA7 /* FIRCLSFABAsyncOperation.h */, + 3E5C6A20E82F32854C91A9CBABF873D3 /* FIRCLSFABAsyncOperation.m */, + F98DE858E02A9156BA57D87690B28A1E /* FIRCLSFABAsyncOperation_Private.h */, + C45EF0E4BD21B870B401AC7A9F4BC934 /* FIRCLSFABHost.h */, + 6280C7ED15DAA3A5E0E3038D367CBCF6 /* FIRCLSFABHost.m */, + F2D3FDAC6E35E3A4A60DACE6A7444117 /* FIRCLSFABNetworkClient.h */, + F605381737E52A42E07DB59E9D132497 /* FIRCLSFABNetworkClient.m */, + 2587D08AE0016E860519C5FD3D686FAC /* FIRCLSFCRAnalytics.h */, + 4C23709D9E5230AE0740B11E2F77FDF4 /* FIRCLSFCRAnalytics.m */, + 9CBADFAA802739BC1494D54D633397B2 /* FIRCLSFeatures.h */, + 9068961FA234A8A48A7B811D3A99AA5D /* FIRCLSFile.h */, + 7D3B3996DF8B175D6C102943B1287C2C /* FIRCLSFile.m */, + 269C194EB9A20E615E29BB75D5C7D527 /* FIRCLSFileManager.h */, + 52CC819F854449E596D7C0218A7D7D07 /* FIRCLSFileManager.m */, + 4866B6084839E09191BAC6E96C8ECE28 /* FIRCLSGlobals.h */, + 2E21083AEF6081819F2618C954D99923 /* FIRCLSHandler.h */, + 68256CE18A61E0EC5F9BBE995BD72AD5 /* FIRCLSHandler.m */, + 6EF45E6B34E8A833D201AF18DB4D1DD1 /* FIRCLSHost.h */, + 74758E69FF604F810D52208123165409 /* FIRCLSHost.m */, + 278D5750B9CBED512AF239D1476A756B /* FIRCLSInstallIdentifierModel.h */, + 661D14DDA78F43059C7D979F601CBF35 /* FIRCLSInstallIdentifierModel.m */, + 2271A63D75EF710B86F55696070BBC39 /* FIRCLSInternalLogging.c */, + A415084EDFBDD627D2E93D944178CD64 /* FIRCLSInternalLogging.h */, + 9237703CC97F126CC1BF0BCDAD8697CD /* FIRCLSInternalReport.h */, + C07B2347F3B80C6128934E4FBC27024B /* FIRCLSInternalReport.m */, + 2AFCB4CB497206301B135794487A4F3A /* FIRCLSLogger.h */, + DD6706FBA0DA32E61A181C8544A2C764 /* FIRCLSLogger.m */, + 95D24C433FEA8DA12C78B604757EC04C /* FIRCLSMachException.c */, + D99AF8387E3CDDEC3C19D94E2E7FEC71 /* FIRCLSMachException.h */, + 7FCC6B2B6A18D2B1C4AF6C4E9A9A1DF4 /* FIRCLSMachO.h */, + 9495F4577ABC143ABDD144F27F5B2D68 /* FIRCLSMachO.m */, + 72F184F00A89B6892E8A35C5F752FB99 /* FIRCLSMachOBinary.h */, + E7369BEBFDA8591DEEB97B85CCA96213 /* FIRCLSMachOBinary.m */, + 0A5674569335EE8FD8A264D7DC0E155F /* FIRCLSMachOSlice.h */, + C6C7C141E0398ED5F9C02385BA5FB0EF /* FIRCLSMachOSlice.m */, + C32B9744EEA882FB2676F3F71A20DDE1 /* FIRCLSMultipartMimeStreamEncoder.h */, + 8ED60D50090167B0FEC10640B8BC352D /* FIRCLSMultipartMimeStreamEncoder.m */, + 0771D69999D0D59011FD5D1D3A2ABBB0 /* FIRCLSNetworkClient.h */, + 0DFD42415005A6A0471AC17658F59481 /* FIRCLSNetworkClient.m */, + 7E269E597DCE8B629F9FDB30B150E807 /* FIRCLSNetworkOperation.h */, + 3C7969C252057FC66B318FBA53E2820E /* FIRCLSNetworkOperation.m */, + 63CE20593C9D054A778C4EE1FBE78919 /* FIRCLSNetworkResponseHandler.h */, + 4B093F0B2504894585ACA8E9F55C5A52 /* FIRCLSNetworkResponseHandler.m */, + 2558C77AEC62D5BB6947D93801314E86 /* FIRCLSOnboardingOperation.h */, + DA078DB0720FD674DC4D551E290D0951 /* FIRCLSOnboardingOperation.m */, + 49D9DA598C6237019E3D9F51D1D43F93 /* FIRCLSOperation.h */, + 40AA22A8260E599CB7D3135966CB9985 /* FIRCLSPackageReportOperation.h */, + D1E31C3EABC8ED0992D9CAAC2C72273A /* FIRCLSPackageReportOperation.m */, + 40CDB95F6435D9563A215A70C47FA5F8 /* FIRCLSProcess.c */, + 3E9911338755448EA3B176EB0257E204 /* FIRCLSProcess.h */, + 13B70B946FA466D66B5DCEDD50D3E651 /* FIRCLSProcessReportOperation.h */, + DBA5C21546ADF63E951D040ED31FCC76 /* FIRCLSProcessReportOperation.m */, + 8F519A3D6C9B6155E3B037042374F12C /* FIRCLSProfiling.c */, + FFDC670F97F91FE9EA4D985EB6804715 /* FIRCLSProfiling.h */, + B0F874152100C9D34034BE05287011BF /* FIRCLSRecordApplication.h */, + 8A791692A887AE75F755F5700D7AB048 /* FIRCLSRecordApplication.m */, + 0B11721D9F870B79AD140FECD483E500 /* FIRCLSRecordBase.h */, + 09817A6ABEBB85128F1DF8DF7D96854E /* FIRCLSRecordBase.m */, + C140BD47F2A6FC52A70CC155BB440066 /* FIRCLSRecordHost.h */, + 105BA024A49B3F6E5E2F5FED4A2777AD /* FIRCLSRecordHost.m */, + 89880C80D190EFD58C23AB4CCC88939F /* FIRCLSRecordIdentity.h */, + 554B5690E9B1405038212A4EEF541D12 /* FIRCLSRecordIdentity.m */, + 7585666B54299ABB6200E16BD8A407B5 /* FIRCLSReport.h */, + 97516F8F60D43CABACBE1F5274A96319 /* FIRCLSReport.m */, + DBD503B7B689F3BCF4D633D23E769013 /* FIRCLSReport_Private.h */, + 42E0153825E02E8F6CB1EFA2749FB887 /* FIRCLSReportAdapter.h */, + DAB59B2372C23B35627C09287BFAFACA /* FIRCLSReportAdapter.m */, + 10F53FE67A551D64E6511AC55719FBE9 /* FIRCLSReportAdapter_Private.h */, + 1E39C7A0FB1F7E5F0F483ECDD00023D9 /* FIRCLSReportManager.h */, + 3930BA0584713EA0EAD66495BAF973A1 /* FIRCLSReportManager.m */, + F2023A98042AEF1DBD90E8C2EF24E975 /* FIRCLSReportManager_Private.h */, + D3CB04CF9D27A14FE20F66B135583E3F /* FIRCLSReportUploader.h */, + 402BBBC82138285D1D44910E61312602 /* FIRCLSReportUploader.m */, + 1D35AD3836F74474711E6CCE4AEF4F37 /* FIRCLSReportUploader_Private.h */, + 4401FAB2F5CDA7A76F9D3DFCE253EEB1 /* FIRCLSSerializeSymbolicatedFramesOperation.h */, + 850C9FF7E6D64FC1D3793865DD5F18B4 /* FIRCLSSerializeSymbolicatedFramesOperation.m */, + 7590A8B996077BBBCB58548DD9828305 /* FIRCLSSettings.h */, + 5C0AF59ADF9BD9BCF1BAA4DBFF6AA221 /* FIRCLSSettings.m */, + 1AE2125D1A39786B0D5853D55291445F /* FIRCLSSettingsOnboardingManager.h */, + 5BAA40DF9933556D33FA504ED4600304 /* FIRCLSSettingsOnboardingManager.m */, + C6FBB890FF5FC74FA5B2AFC3D425EA37 /* FIRCLSSignal.c */, + B746AB00B1C549A92A786CFDBDE851D3 /* FIRCLSSignal.h */, + 3100F1B54F03053633365214D6F06F36 /* FIRCLSSymbolicationOperation.h */, + B48304C89645A2741E543561DF31AE05 /* FIRCLSSymbolicationOperation.m */, + AB61AF2BD0C7D162A1DC05C2F962371A /* FIRCLSSymbolResolver.h */, + B00DA36C3E33D5F38AE88D21583D8A3E /* FIRCLSSymbolResolver.m */, + 9920F57376A5FF561CECB1A08A49D37F /* FIRCLSThreadArrayOperation.h */, + F90C0E0E765BA40F1C6BE4BC4D59BA6D /* FIRCLSThreadArrayOperation.m */, + 41F384B456FBEA8577A41BC89D7FE31D /* FIRCLSThreadState.c */, + 0304A90CD42C0A9A97BA4AB0C950257A /* FIRCLSThreadState.h */, + 4F9C9A9B606E5304AD7F315899F119AF /* FIRCLSUnwind.c */, + F2C2B649E995CFB460ADE39730713BF7 /* FIRCLSUnwind.h */, + 27937E239F958C7BA2BBDD9F41E34459 /* FIRCLSUnwind_arch.h */, + 0B8886E40D9A51AAD4EFE29D624C2C7B /* FIRCLSUnwind_arm.c */, + 4913B9003CC22147836EBC82EC7E98A3 /* FIRCLSUnwind_x86.c */, + 427BDB8835C2307A7E6443B23DE597FD /* FIRCLSUnwind_x86.h */, + A84C766D1FC02C74EF4A30F95DF67671 /* FIRCLSURLBuilder.h */, + E7BBFE8A8EC00F03F85CD1CE0470D6AB /* FIRCLSURLBuilder.m */, + 975E0410BE3BF1DF3BCD3D21B623C26D /* FIRCLSURLSession.h */, + 0CC26984BC5A8059EF2B66552655E014 /* FIRCLSURLSession.m */, + 223FB65C2ACDF523FD2D86058DD9D428 /* FIRCLSURLSession_PrivateMethods.h */, + 7D81997EA728A275415F2B3408377FE7 /* FIRCLSURLSessionAvailability.h */, + CB094D325E2D94FFEDDD9215A3E5B073 /* FIRCLSURLSessionConfiguration.h */, + 8EDF9B371305736240C5E072780693E1 /* FIRCLSURLSessionConfiguration.m */, + 1F070582E7965E9CC4E800B1407041D1 /* FIRCLSURLSessionDataTask.h */, + 81EC71702E7F4D2BC0DCB968EA902170 /* FIRCLSURLSessionDataTask.m */, + A471924FD26F5382F6024E14FB627FD4 /* FIRCLSURLSessionDataTask_PrivateMethods.h */, + 9E72597DC264C6E1B0AFB6DDACF20427 /* FIRCLSURLSessionDownloadTask.h */, + 2D820227642805DA473DC8E1229F6E5C /* FIRCLSURLSessionDownloadTask.m */, + 3357A790B3FCE7B8CF729F3CCA00ADCB /* FIRCLSURLSessionDownloadTask_PrivateMethods.h */, + A9A63B1DE3B7B037345A19741FAEBA60 /* FIRCLSURLSessionTask.h */, + 8B0C5DBD5E823DF52591E1DCBA3FF825 /* FIRCLSURLSessionTask.m */, + 3782B6175FC2FB5D58643E0B5F52F290 /* FIRCLSURLSessionTask_PrivateMethods.h */, + D73D2675D55996A9AD80AB7DEAEAF5B1 /* FIRCLSURLSessionUploadTask.h */, + 2430249FCEB29B6B2B00A0D14D1FC81B /* FIRCLSURLSessionUploadTask.m */, + 42902DB959CF1401AF41037680A1A48D /* FIRCLSUserDefaults.h */, + F3FD421B015E2E19354E67775DAB53BC /* FIRCLSUserDefaults.m */, + F658D9B69151585486B168D715F0D0D9 /* FIRCLSUserDefaults_private.h */, + D02D2DCC50E6AEE893DD1ABD1624E98C /* FIRCLSUserLogging.h */, + 3F60309EB0A016406F1C5EEC2EB30BCD /* FIRCLSUserLogging.m */, + 4F46FB9EE0365C4B202C308F73C27F5C /* FIRCLSUtility.h */, + D1C17D6BCCE0FD1190FE02412BE42487 /* FIRCLSUtility.m */, + FC38F2F91A70E7303B5FD64627CFA66A /* FIRCLSUUID.h */, + 289D475971DCFA92C61D9AC883992DC2 /* FIRCLSUUID.m */, + E0E3B79FB416677F192AD6676762E387 /* FIRComponent.h */, + 3B5BF288BA68B9314D3EEBF73A0BABD9 /* FIRComponentContainer.h */, + 14E12920AD2C9BBB65245D36939FF49E /* FIRComponentType.h */, + 085F2D45ADC6B3C6B091D77E55A2B731 /* FIRCoreDiagnosticsConnector.h */, + 8D16DFDE12A5EA43DAD38E3D5A949D81 /* FIRCrashlytics.h */, + 45C22B4D65CC94009F43381DF758DB7C /* FIRCrashlytics.m */, + 6A1D6D8C075FFFE4725EEC0149E55BC6 /* FIRDependency.h */, + 8C0A2A1D0F08D86E105EDC46654F0046 /* FirebaseCoreInternal.h */, + F12E2DA40E999C9F23665847A72D9499 /* FirebaseCrashlytics.h */, + AAC3EFCF175788B229E87D981F263D2E /* FIRErrorCode.h */, + 0A5C2C951E1146C53D2C80BFB93AA9D1 /* FIRErrors.h */, + E901C07F21ACCFFBBCC8DFF7C1FD5BCA /* FIRExceptionModel.h */, + 1B007BDC6B4A7BEBDDEFFE9B7EC5817E /* FIRExceptionModel.m */, + 5479E8B6F66D7587404812B975B944EC /* FIRExceptionModel_Private.h */, + E89DBE92A982BFF6BFBA0712FB5F744F /* FIRHeartbeatInfo.h */, + C043DAFB27572B1584BBA1305968CA49 /* FIRInteropEventNames.h */, + CBBC58456FD12B9C80B77E30FC1E815D /* FIRInteropParameterNames.h */, + 2BF5710ED1344E425B0C831ABE6C9BB9 /* FIRLibrary.h */, + DCA08CD7DFA01DBE6E9601B6C3F0B849 /* FIRLogger.h */, + 0994884AAEAE308F4C973B3EDF9297D3 /* FIROptionsInternal.h */, + 80BC9C2ECD98407F0B7D9116BFFE6CF0 /* FIRStackFrame.h */, + 7F7385F3405CE27FE5DDCB154B05CB1F /* FIRStackFrame.m */, + 8FB985871DC4392ACC50F4BC00B00CCB /* FIRStackFrame_Private.h */, + 929243973F84637852815F2E44CDFBC9 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/PromisesObjC"; + name = FirebaseCrashlytics; + path = FirebaseCrashlytics; sourceTree = ""; }; - 64980AF1CD7C9CE1BA8056800FF285AC /* Support Files */ = { + 7559FC53141265B88DC709AE29549E55 /* FirebaseMLVisionTextModel */ = { isa = PBXGroup; children = ( - 249326C9D7593218704EF5F35BC508CB /* FirebaseAnalyticsInterop.xcconfig */, + 427D025CC6D7C4C1E358B00C8C4FA9F4 /* Frameworks */, + F0524E83D6C38365C6AAEF1B483116A1 /* Resources */, + B400BA426986629E8A3F5272F0267FA9 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseAnalyticsInterop"; + name = FirebaseMLVisionTextModel; + path = FirebaseMLVisionTextModel; sourceTree = ""; }; - 6683EEA3509EB1DF82786B9799B8439A /* Frameworks */ = { + 763EC801898622B31B7B2188472A62B7 /* Environment */ = { isa = PBXGroup; children = ( - 811629BE05D4C163390F47EA71CB25FA /* FirebaseMLCommon.framework */, + 04DA57D2C1E6D49C4B5781F927C9A3C6 /* GULAppEnvironmentUtil.h */, + 350A3A7AB41F9DAF623E198BC6AB391F /* GULAppEnvironmentUtil.m */, + 5E43AAB91AE6EA1AF5A823D156A01F66 /* GULHeartbeatDateStorage.h */, + B55AAFCFCAE88D4D115DF85DB07C782C /* GULHeartbeatDateStorage.m */, + C7512CD0FDB413574E66A937DA3C2496 /* GULKeychainStorage.h */, + AE6F3DC19988998C45D91E4808E3EEAA /* GULKeychainStorage.m */, + B3B30F20326967C59817E91FCE64BD2B /* GULKeychainUtils.h */, + DEE36801554FC77D8625D038620A70CA /* GULKeychainUtils.m */, + E4E75305D4960C8E952FBE47ECD582E1 /* GULSecureCoding.h */, + DD999AACFF9278F187D89B97853E5A60 /* GULSecureCoding.m */, ); - name = Frameworks; + name = Environment; sourceTree = ""; }; - 67ED06DD5C0650D71370789993D94108 /* Support Files */ = { + 76718122F28E2012D8D4A0BD0519C0AE /* Swift */ = { isa = PBXGroup; children = ( - EE6D4B35CA081002AD738441F91EBD92 /* GoogleUtilities.modulemap */, - 6BF4C86277852513762776455A3531A9 /* GoogleUtilities.xcconfig */, - 2792E2BE386657EA1DBC95819B8030F7 /* GoogleUtilities-dummy.m */, - AC9844E9D7DF0314A25FD98E9669621D /* GoogleUtilities-Info.plist */, - 18E414BBC594641320ED3125928D89AB /* GoogleUtilities-prefix.pch */, - 96D1377C930B2691422F4AB93CB5024B /* GoogleUtilities-umbrella.h */, + 84195E81AEA157FD451A7FE02A941445 /* MarqueeLabel.swift */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleUtilities"; + name = Swift; sourceTree = ""; }; - 70B030E4B653B6DEA2D07CF51EC93E50 /* Products */ = { + 7BCE7D47615062056EBE9076438F20EE /* FirebaseMLCommon */ = { isa = PBXGroup; children = ( - 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire.framework */, - 05C4280976BF93DA8B36818DE2E2A5E0 /* Cosmos.framework */, - 3347A1AB6546F0A3977529B8F199DC41 /* FBLPromises.framework */, - E2B63D462DB7F827C4B11FD51E4F8E2D /* FirebaseCore.framework */, - 8CC9178C366942FD6FF6A115604EAD58 /* FirebaseCoreDiagnostics.framework */, - 86375444C196BA272DDBB8165BF64A15 /* FirebaseCrashlytics.framework */, - 13C8C8B254851998F9289F71229B28A2 /* FirebaseInstallations.framework */, - 2DA0D814DFCB860D31D7BCD63D795858 /* FirebaseInstanceID.framework */, - FD519882861480B93B563B477CE1FA29 /* GoogleAPIClientForREST.framework */, - 856B5CD56F194FAD26EA91620B66D614 /* GoogleDataTransport.framework */, - 6942351307BC1F54575D9853307EAE0E /* GoogleDataTransportCCTSupport.framework */, - 4DFBF9CE0440C3CACD8A52D4213CF90B /* GoogleMVTextDetectorResources.bundle */, - 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac.framework */, - B43874C6CBB50E7134FBEC24BABFE14F /* GoogleUtilities.framework */, - C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher.framework */, - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift.framework */, - CF0AA9FBFBDB70858C030769541505ED /* MarqueeLabel.framework */, - 06FC5C9CF96D60C50FCD47D339C91951 /* nanopb.framework */, - 0AB91F46DDDA5588520D012E6F4FB918 /* NotificationBannerSwift.framework */, - 0A64A5963516FC401DF95E1DD737CC40 /* Pods_FoodScan.framework */, - 90DA5C11FF9EE4A98F1ED18777C47157 /* Pods_FoodScanTests.framework */, - 2095243CBEF52A9869069E52A0A32722 /* Pods_FoodScanUITests.framework */, - B72A389B0E6A6DD2F3D61F4DC7F84D83 /* Popover.framework */, - C2105C94812B6214B154F54DCEDB72AC /* protobuf.framework */, - B0B214D775196BA7CA8E17E53048A493 /* SDWebImage.framework */, - 979486118B3E90C08386079D57962701 /* SnapKit.framework */, - E23C076BA70925415F490FEDB215DA92 /* SwiftyJSON.framework */, - F54A3C504AE7A4C6C1953576C5D40F56 /* UILoadControl.framework */, + 0C6EBBEDA8BF8B51F2C05E0B0506382A /* Frameworks */, + B743A2273B27A9DD9F521E3FC55E52C2 /* Support Files */, ); - name = Products; + name = FirebaseMLCommon; + path = FirebaseMLCommon; sourceTree = ""; }; - 72101B0F02224A0D630BC9DB73DFF724 /* UserDefaults */ = { + 7BF5152A62560321F64F601D607A49A1 /* Support Files */ = { isa = PBXGroup; children = ( - 809A8BEAFA2863076B202AE538280451 /* GULUserDefaults.h */, - 0EDA2745EF3D3082870D8EE32F2459C1 /* GULUserDefaults.m */, + 8193DE9414443DA205FC47B6F6886D17 /* SnapKit.modulemap */, + 5D6DF93D700922A1ADC42A6A93543107 /* SnapKit.xcconfig */, + FD588FEA8E1E81C7A65560C9E619A80B /* SnapKit-dummy.m */, + D9C3C096A0FFBFF3540F332698808F53 /* SnapKit-Info.plist */, + D33CF01AA843BFA7781E1B37C2769868 /* SnapKit-prefix.pch */, + 21A0969C342AD5A731788276912DB3B3 /* SnapKit-umbrella.h */, ); - name = UserDefaults; + name = "Support Files"; + path = "../Target Support Files/SnapKit"; sourceTree = ""; }; - 7BDC8AC276B71365EA844A9B2CCB2123 /* Support Files */ = { + 7C2045719995AFDB7D979616AEC17735 /* Support Files */ = { isa = PBXGroup; children = ( - 52865C041E8B5EA333FC6DA146E61DAF /* SDWebImage.modulemap */, - F33847DEA2A9C88EA42F0F06E7A868E5 /* SDWebImage.xcconfig */, - 5E344BC55557B53F2A0672426BBC96B5 /* SDWebImage-dummy.m */, - DE6FDCA53EB858EFFC8785EB41446B50 /* SDWebImage-Info.plist */, - 3BA63EA015D74AC95B0E7763DAA238FF /* SDWebImage-prefix.pch */, - F8A26D3D295BBE1478C6D5C201C38A3E /* SDWebImage-umbrella.h */, + DD2DD824D18C00AF1A09FC1D44B5ACF7 /* SDWebImage.modulemap */, + BCA5CEC9939DB30C9FF68097315C21F9 /* SDWebImage.xcconfig */, + CE67C85F5535F874E0D491B50DC8351D /* SDWebImage-dummy.m */, + A7EB0B6BEAC3590C8DAF1284D3AE1523 /* SDWebImage-Info.plist */, + 0682F2F823B15ADE24648DBCA127E354 /* SDWebImage-prefix.pch */, + B8AFE134A25611133C0F83C1072A96B7 /* SDWebImage-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/SDWebImage"; sourceTree = ""; }; - 7DCD65BF35442D394DA26C177FB4DC9A /* Support Files */ = { + 80DD86801B2D2D27B5666FBB4AE43EA3 /* Alamofire */ = { isa = PBXGroup; children = ( - 4F9D59C37CCC0BA64ACC04B13DCD941A /* FirebaseMLCommon.xcconfig */, + F6D60C2B48096DA88FF81E3B107E7586 /* AFError.swift */, + 33224A4FD1302CD2C9D956007E24D28C /* Alamofire.swift */, + DD16ED10136EBA9D6F8A225AA1DF6EDE /* DispatchQueue+Alamofire.swift */, + 67A70FAE7E97277E838C8C43643A1B9F /* MultipartFormData.swift */, + 6B6BCC08D77624EBE7D24B455B0F45D7 /* NetworkReachabilityManager.swift */, + 01A18FFA505B58A1E51C2458CE8BB0DB /* Notifications.swift */, + 3B5503A38874184741D499982BB791E6 /* ParameterEncoding.swift */, + 3C838576264BE57CFC548015E8C842CA /* Request.swift */, + 3B69F91378204333C582896D23931F8A /* Response.swift */, + 696BDE35DAF24A4C047BC0A023D3C34F /* ResponseSerialization.swift */, + D5ADFF44C0EF00E26C109DD0EB322106 /* Result.swift */, + 9852836E9ACF73B3B3CB423FE1FB586A /* ServerTrustPolicy.swift */, + 3A7B786B88FC47C56B14154A91926FFB /* SessionDelegate.swift */, + 0BF4231CB348100C6ECD88B8C674E5E7 /* SessionManager.swift */, + FBDD7A7DE14EEBF98608CA1B8E696BCB /* TaskDelegate.swift */, + 55F1263D57D1E5E2E1C6595C7C6F0461 /* Timeline.swift */, + 5BC17FF10FD8AE0BFCAC15B17FBE1457 /* Validation.swift */, + 93807DD0D74B3C1A9D472E907D3CE1B3 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseMLCommon"; + name = Alamofire; + path = Alamofire; sourceTree = ""; }; - 865C7CE3327B160EA173FA590998434C /* FirebaseCoreDiagnosticsInterop */ = { + 8172713FC683282426562D9526D5B4BC /* Support Files */ = { isa = PBXGroup; children = ( - 53D5232F925CBEDF6B1F4BCDB7BD3DF9 /* FIRCoreDiagnosticsData.h */, - 4866A77D46D9CC820D7E94505385EB26 /* FIRCoreDiagnosticsInterop.h */, - EBC92B399C8784F124CD9E58C9100CF9 /* Support Files */, + 8D54220C5905C69628BF96FF6C0A8B28 /* GTMSessionFetcher.modulemap */, + 4549BF8BAB516C4D742E2E07904A4A60 /* GTMSessionFetcher.xcconfig */, + 0C89C537DCF620E7C31B5E37533C41E3 /* GTMSessionFetcher-dummy.m */, + D5BEFDC4ABCCBD0790BCFEE7D78C56D7 /* GTMSessionFetcher-Info.plist */, + 57267D8A8FDE5F890F2DB78DCFF3FEF1 /* GTMSessionFetcher-prefix.pch */, + 2608AA9BA1CF6274A5D49DE39B3C8E37 /* GTMSessionFetcher-umbrella.h */, ); - name = FirebaseCoreDiagnosticsInterop; - path = FirebaseCoreDiagnosticsInterop; + name = "Support Files"; + path = "../Target Support Files/GTMSessionFetcher"; sourceTree = ""; }; - 8788B41640692A6087D412BF0FE28399 /* Core */ = { + 84D470180D0A396DCC88B7E8AEFFE45E /* NotificationBannerSwift */ = { isa = PBXGroup; children = ( - 03516DB8E428B74D2EAD7C6BD495C209 /* GTLRBase64.h */, - 31A1E416F0F95C5C547D24129760FDD3 /* GTLRBase64.m */, - C30C791C0900E3D6D448685C791EC0BD /* GTLRBatchQuery.h */, - 39A7B1FC2C965BA5039E209FCD1F491A /* GTLRBatchQuery.m */, - 52425DA4C7D980D680BF66A5B90EC430 /* GTLRBatchResult.h */, - 8B3180116117B0AC65692CC686C0B0AB /* GTLRBatchResult.m */, - D0B2FDAFA70FA4B0BC2118584E6E421A /* GTLRDateTime.h */, - 15D8CD930392A0C1D9CFD6E1113056F7 /* GTLRDateTime.m */, - 10F4994921385872D8B06CEC9A89568C /* GTLRDefines.h */, - C1D880B0CFB05E8A73862E2406107F7F /* GTLRDuration.h */, - 4C53AF6395EC4F9BF0B06EA0A5BA3E53 /* GTLRDuration.m */, - 6C27E5CDD0272AFAE2658C9D782153DB /* GTLRErrorObject.h */, - 4A5CB1E8250DFED48AB6605D60B24C67 /* GTLRErrorObject.m */, - 98EBC8FDBD7FE209F9AE2BA5DC36A5BB /* GTLRFramework.h */, - 113E2D26B77DB74E66A34846DA654AB0 /* GTLRFramework.m */, - D4106261F27E712181D4F6458B7EF097 /* GTLRObject.h */, - 84EDA72DC5DBE0EBFF652C4725EE1E97 /* GTLRObject.m */, - BDC0B939245A06998182C0FEE1F1B0D8 /* GTLRQuery.h */, - 0DCE831830D3CB65642BFDD442C2FE11 /* GTLRQuery.m */, - 9E5F8A2FB07F90EC23F1EF1078CD10F3 /* GTLRRuntimeCommon.h */, - 3F1C234DE2579A014835C4A80CBE7072 /* GTLRRuntimeCommon.m */, - 29B64BB3B3198FA97314CB7128498F97 /* GTLRService.h */, - 462BE57535C2E8A8CDD7823F17692773 /* GTLRService.m */, - 13A714E71A154A8A4790324863DF9A67 /* GTLRUploadParameters.h */, - 4164DDEF584A183DC8DCBD639583FF71 /* GTLRUploadParameters.m */, - DB8D2F39D6DB1868D4E759378775FCCD /* GTLRURITemplate.h */, - 975D71F8714322D59935E3C852F36F6E /* GTLRURITemplate.m */, - 75120226B1292A2B3B9A4F6E4CA63895 /* GTLRUtilities.h */, - D725AA5DB8EAF50E3E1D18BC0B28C4E5 /* GTLRUtilities.m */, + 5688D84FDA31D39123C186C9498247AA /* BannerColors.swift */, + F465778F3F0D0FC55AB567D52E7D49F4 /* BannerHapticGenerator.swift */, + 12D65F0D204A6F8D2259A875878A315D /* BannerPositionFrame.swift */, + F4B5C744CDABC8A69C37AEF69D393C69 /* BannerStyle.swift */, + 4618A2F8640A65CE51E183364006936F /* BaseNotificationBanner.swift */, + 6A0E1D0EAD7C3211A5075A16D640D26D /* NotificationBanner.swift */, + 9CBC76A84869AA9264A1DB540761FBF5 /* NotificationBannerQueue.swift */, + 35B432C987C625DEDCC05F238C34908F /* NotificationBannerUtilities.swift */, + FAF15C4C71AE6A1D77DA796CC6215286 /* StatusBarNotificationBanner.swift */, + C9BB97EF0211C608F7998E80A76A86D4 /* Support Files */, ); - name = Core; + name = NotificationBannerSwift; + path = NotificationBannerSwift; sourceTree = ""; }; - 8964F8E1BE77BD516627DAA79404F3AD /* FirebaseInstanceID */ = { + 8615BA2129BD92D286B8D04487276B4B /* Frameworks */ = { isa = PBXGroup; children = ( - FBCECCBC1BDF1CEBC8958F88D94A64AD /* FirebaseInstanceID.h */, - BC6C26FA89F5178AF575CE3A57BD7735 /* FIRIMessageCode.h */, - 0D55D0B21D5134615C9FB6DF43A52C85 /* FIRInstanceID.h */, - 712F6E55B565C28AAE6E341A9229225F /* FIRInstanceID.m */, - 2692559EEA9075EE448BF6164879F242 /* FIRInstanceID+Private.h */, - 75AE0BB3237F88D5AA1C2CE91181136A /* FIRInstanceID+Private.m */, - 13F3B727CBE66CB322BE9EB4382AED89 /* FIRInstanceID_Private.h */, - FBE0AE80E62348D84533CA43FAFF7133 /* FIRInstanceIDAPNSInfo.h */, - DE8BCB8E624614E3040C4F7956D08819 /* FIRInstanceIDAPNSInfo.m */, - 6678A53EB2732527F5B09AC47D40A2D9 /* FIRInstanceIDAuthKeyChain.h */, - 3445BD06ACBE4FBB8CB22B04EAF052E9 /* FIRInstanceIDAuthKeyChain.m */, - 97FD1D9845673451784616D0BD864DC4 /* FIRInstanceIDAuthService.h */, - 5F5E56083411168460263A3799967A46 /* FIRInstanceIDAuthService.m */, - 9A498196B15029777781274E8DF6E458 /* FIRInstanceIDBackupExcludedPlist.h */, - 79AB6C51428445076AB33773B96FE0E9 /* FIRInstanceIDBackupExcludedPlist.m */, - AFC6E469AEE1C7946FEABB1877BF44C8 /* FIRInstanceIDCheckinPreferences.h */, - C04EB758C696167A57DB872837B7948B /* FIRInstanceIDCheckinPreferences.m */, - 26EA8DA73DD699790FA3015A3A0F34A8 /* FIRInstanceIDCheckinPreferences+Internal.h */, - A48266F2B80CE922C74A2C70EA5CD467 /* FIRInstanceIDCheckinPreferences+Internal.m */, - 9A09C23D7321E7D9D147858565DC301B /* FIRInstanceIDCheckinPreferences_Private.h */, - F9E4F242BD62C6BD267D0FB347EB4F90 /* FIRInstanceIDCheckinService.h */, - 5D5442B2959E743E3BF73F0E8FE053C3 /* FIRInstanceIDCheckinService.m */, - 9676DF37760F7EEC517D2C2B69A2A1EF /* FIRInstanceIDCheckinStore.h */, - 184AB3679BEDBDBEE19D6CCE99E6C24E /* FIRInstanceIDCheckinStore.m */, - BFCCD9324F36FFDB4DC77E66CD54CF0B /* FIRInstanceIDCombinedHandler.h */, - B3989DA7E8A929385FF24036FD5488E0 /* FIRInstanceIDCombinedHandler.m */, - CFBA599CAF9BA50DF7049394C4E0199B /* FIRInstanceIDConstants.h */, - C7D9945952692B5A307A84E882241324 /* FIRInstanceIDConstants.m */, - D3ECC965E0CAEBA5A523D75EADF88143 /* FIRInstanceIDDefines.h */, - 08FF81A6AB422695EE3DC72CB0C58686 /* FIRInstanceIDKeychain.h */, - 1CBE2DBF2678CC3C8C0C58D83C5A3A19 /* FIRInstanceIDKeychain.m */, - 3AF3F7A0110C035BEDF744DE8E296424 /* FIRInstanceIDLogger.h */, - C9C5F7A7A2A8AC2737447DEBE827C35D /* FIRInstanceIDLogger.m */, - EFC66B7E4950AA8895BF5A9BD3B0125D /* FIRInstanceIDStore.h */, - 28D0585AA5E47C45F8B511D82C6D94CE /* FIRInstanceIDStore.m */, - 43DAD21B36E9C2EEBC4F8B4F212B2D7F /* FIRInstanceIDTokenDeleteOperation.h */, - 58BA618464495B746B277CA8C44BFBBE /* FIRInstanceIDTokenDeleteOperation.m */, - 80F272E53DEC88E88CE17A2A827CDF8E /* FIRInstanceIDTokenFetchOperation.h */, - C81A7FC59D4F7C9DF300A2B27AA358B3 /* FIRInstanceIDTokenFetchOperation.m */, - 8108FF912F670E5EFDCBD5B23ABF15D3 /* FIRInstanceIDTokenInfo.h */, - 87104AF581982761FF5A5F9D39F2871D /* FIRInstanceIDTokenInfo.m */, - 4CDCC58CE809341C6D4493EA20D1B46F /* FIRInstanceIDTokenManager.h */, - FC3286B48C379120ED10D39109683F3A /* FIRInstanceIDTokenManager.m */, - 286BE96E9D2BFCE6F1B209E475D51C2A /* FIRInstanceIDTokenOperation.h */, - FF52E871BD37790734EC0BFB570A1CCD /* FIRInstanceIDTokenOperation.m */, - 0D7D41FEAA62A857C5D8A3023F209BCA /* FIRInstanceIDTokenOperation+Private.h */, - C578258B0FF0AF5BCD11F6479298EB1B /* FIRInstanceIDTokenStore.h */, - 8333818071AF76D91171108D74F2C2FB /* FIRInstanceIDTokenStore.m */, - C6D3861EEEDA86A90235CDE69AB29047 /* FIRInstanceIDURLQueryItem.h */, - 9D7F5B4D16D2112B121D56AF97C454A4 /* FIRInstanceIDURLQueryItem.m */, - B660020338109295504EC39BC2326932 /* FIRInstanceIDUtilities.h */, - 16EC77150DF3C5A4E0E488C9EFED5C35 /* FIRInstanceIDUtilities.m */, - 4DE20D841C531F358243B6B62FCE1B41 /* FIRInstanceIDVersionUtilities.h */, - FD1A4B810B85D7D5CC86D2DE1E18B869 /* FIRInstanceIDVersionUtilities.m */, - A78327C581F5A5D62A84D29A82E5EF69 /* NSError+FIRInstanceID.h */, - 24431E1D279EDEB846674E18AAF45C23 /* NSError+FIRInstanceID.m */, - FDB3A5949B132B5EDFD8DAE077E87E80 /* Support Files */, + 18E7AA2824D4E8F3F3733CE692EC3EF8 /* FirebaseMLVision.framework */, ); - name = FirebaseInstanceID; - path = FirebaseInstanceID; + name = Frameworks; sourceTree = ""; }; - 8E7987CD914AF7D56B5A29F88ECAEF11 /* GoogleDataTransportCCTSupport */ = { + 88A59E6D7720266914E018A468330ADB /* NSData+zlib */ = { isa = PBXGroup; children = ( - 6F1CC1C65EE279A0F3B36DB7BBEC27D5 /* cct.nanopb.c */, - 0C50AEB65EB62328E55198842BAA3337 /* cct.nanopb.h */, - 10B470C1AE0F980485D2F5676F3DC962 /* GDTCCTCompressionHelper.h */, - F3571D337FA63EAE0F31442C9BBEED81 /* GDTCCTCompressionHelper.m */, - F54665FE0ACB0A881732FA8D8A4A16A2 /* GDTCCTNanopbHelpers.h */, - 897F1528B5ACC3C7DE817CFD8051126D /* GDTCCTNanopbHelpers.m */, - 69A0B9DF544914F9DFE48B1878F863DD /* GDTCCTPrioritizer.h */, - E8DF70D5F2538FD3C8E43DBF5A3A985B /* GDTCCTPrioritizer.m */, - 1528CA2CFC35F900E21D7852758AE895 /* GDTCCTUploader.h */, - 66BE54A64A2353B6F6BB988688E14AAD /* GDTCCTUploader.m */, - 034490944352C96A33F6C717DBF7056C /* Support Files */, + B118A7841D4491C258D2367018343F7B /* GULNSData+zlib.h */, + E1493227AE7C34FD02E174319B19B6A4 /* GULNSData+zlib.m */, ); - name = GoogleDataTransportCCTSupport; - path = GoogleDataTransportCCTSupport; + name = "NSData+zlib"; sourceTree = ""; }; - 8FF52618DFD08BDC97012D535F5BE229 /* Swift */ = { + 8BE639DC5BBDAC522806BC735F2C199D /* Support Files */ = { isa = PBXGroup; children = ( - 2C3C16A25BE5F2D32BDCABC1BFF9D5BE /* MarqueeLabel.swift */, + A9823116ED2876A15810482C80126E1B /* nanopb.modulemap */, + 630F25B88555F922422BA2905EF3707C /* nanopb.xcconfig */, + A9E04FDCF97C8F6B06C175EF69368F0E /* nanopb-dummy.m */, + 24180CA98D9243B4E8D9DE6779BA461C /* nanopb-Info.plist */, + 685886C69E4ED792062B4A2368C437A1 /* nanopb-prefix.pch */, + C98D7214A49530C0A0780FEC6B8E10A9 /* nanopb-umbrella.h */, ); - name = Swift; + name = "Support Files"; + path = "../Target Support Files/nanopb"; sourceTree = ""; }; - 91FA415FE8121B5ED4E54104565807AD /* Support Files */ = { + 8E72F4D93293D70345B2FCC50A0055AC /* Support Files */ = { isa = PBXGroup; children = ( - E95CFCFAD175E6DEC1D62F7FA42C9349 /* FirebaseCoreDiagnostics.modulemap */, - DAC3050D3A50FD45CE5D077A49CEC1EA /* FirebaseCoreDiagnostics.xcconfig */, - F0703C01EECAD452AA742A4D9B5E11AD /* FirebaseCoreDiagnostics-dummy.m */, - 93C643A51B00E4D1338AEFA2D6777BFA /* FirebaseCoreDiagnostics-Info.plist */, - B6347938369655E1257BC31BC42D0719 /* FirebaseCoreDiagnostics-umbrella.h */, + D2531251E4EBBDA1583FF4815745BBF4 /* FirebaseInstanceID.modulemap */, + 439B296ECDD7432AE7F81F84F5D319AA /* FirebaseInstanceID.xcconfig */, + DF275FD8171E77E18A2ACFADB2C28C1A /* FirebaseInstanceID-dummy.m */, + ED4DBB5FEAA4E13E12D055123506340A /* FirebaseInstanceID-Info.plist */, + 3EAA480CF461DC57ABAAAC0E2447C527 /* FirebaseInstanceID-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/FirebaseCoreDiagnostics"; + path = "../Target Support Files/FirebaseInstanceID"; sourceTree = ""; }; - 94FB46F969BC3858D09731C4207257E7 /* Pods-FoodScan */ = { + 8F216480737710EAACE7BB77A208733C /* Support Files */ = { isa = PBXGroup; children = ( - BAF4EC4B68165797EB1BCD1504B3490B /* Pods-FoodScan.modulemap */, - 9A1F0267BF1C640035589EA87862E895 /* Pods-FoodScan-acknowledgements.markdown */, - 6EC4D9CC353F82FA11968EE8503F4A19 /* Pods-FoodScan-acknowledgements.plist */, - D1E557C160ADF50B1E64450EAC68D08D /* Pods-FoodScan-dummy.m */, - 72057B04BAE956B54AD33D5B97E16B31 /* Pods-FoodScan-frameworks.sh */, - EE71B2AB6C5C0D8BCDB03BB62E2D6B21 /* Pods-FoodScan-Info.plist */, - D9A49C45A7778F7F237891638D0C4AE4 /* Pods-FoodScan-resources.sh */, - F3BC53663530C402033E24E3E2C37349 /* Pods-FoodScan-umbrella.h */, - 853E26053E0F37133D37E03C471A7710 /* Pods-FoodScan.debug.xcconfig */, - 0612EAD4175959AC43D07BBBD03F9F82 /* Pods-FoodScan.release.xcconfig */, + DC39B25FAAC0E01533E78ED735D0EFE2 /* FirebaseMLVision.xcconfig */, ); - name = "Pods-FoodScan"; - path = "Target Support Files/Pods-FoodScan"; + name = "Support Files"; + path = "../Target Support Files/FirebaseMLVision"; + sourceTree = ""; + }; + 9123E5268483E193747BC08F3C4A1E8E /* Cosmos */ = { + isa = PBXGroup; + children = ( + E121B6259D75B3FE67BDCA16B0F47EFB /* CosmosAccessibility.swift */, + CCAD323052C3D1E7B740854B004F5AAD /* CosmosDefaultSettings.swift */, + BDD3C243553962B5B9F73E4E5EB307AC /* CosmosLayerHelper.swift */, + E1D1E1875CE4F9426544E6F7895B152B /* CosmosLayers.swift */, + 7A954BB6E2E69CED6A236519D4BBE2F0 /* CosmosLocalizedRating.swift */, + 2688F6CA8134AD73A3FDE51E86D00E6F /* CosmosRating.swift */, + 0EFAC56EC3F4833109F37DADC96AE559 /* CosmosSettings.swift */, + 806DC306FF3D82DFDD67AB7C0E5A41D7 /* CosmosSize.swift */, + 449799DC12BAD1B71D211BB154255248 /* CosmosText.swift */, + C4F6E746701AC73DCC98361610FF0A71 /* CosmosTouch.swift */, + EFA982327ACFB64AD0CA803FCC2C468A /* CosmosTouchTarget.swift */, + A86EDFC728B0F8D056ACAD5D22ECAE3E /* CosmosView.swift */, + A8DF0433DA66F8B29FF166EE000D1A1E /* RightToLeft.swift */, + D98F2FDB62DF01198E8ECFEAD4550345 /* StarFillMode.swift */, + CC5098685A6600BEC3D9AD5DB82CD7AB /* StarLayer.swift */, + 4A0ACB976936A194A02807D90E7B4B55 /* Support Files */, + ); + name = Cosmos; + path = Cosmos; sourceTree = ""; }; - 959604B76221C990D81C520964E6FE7E /* Support Files */ = { + 912C244865F60B1D19BB6F07E4272C5F /* Support Files */ = { isa = PBXGroup; children = ( - 8B3A87290C576CDCC08D1DB7E0B3DBBC /* NotificationBannerSwift.modulemap */, - AF38B7A656B8D28F042437914588D2E9 /* NotificationBannerSwift.xcconfig */, - D751BFDA01431E2EA4275E69492792BE /* NotificationBannerSwift-dummy.m */, - D4D6F12670FC4AE13D7EB8F44277CCC9 /* NotificationBannerSwift-Info.plist */, - 0BC3335F66ADF5B22C6EE00A12AC22EA /* NotificationBannerSwift-prefix.pch */, - 357E1EA2BF1A3580154042B603D344AC /* NotificationBannerSwift-umbrella.h */, + 92452BA1A9BCDD73530D25E7EAD9C04B /* FirebaseInstallations.modulemap */, + 603B3F1059B3E9ED3815D62DA41A69E5 /* FirebaseInstallations.xcconfig */, + 79EF790BE57C881C259212AE4AD2508B /* FirebaseInstallations-dummy.m */, + 1A2417E2FA4912E746720C2A1FAB3273 /* FirebaseInstallations-Info.plist */, + 67CBAA8EB35349300BACDFF658284AB0 /* FirebaseInstallations-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/NotificationBannerSwift"; + path = "../Target Support Files/FirebaseInstallations"; sourceTree = ""; }; - 96AEEDB1A01A37E68CE8EBD228E54793 /* FirebaseMLVision */ = { + 91CA9C571AEF3E57A05F299B28547D89 /* Support Files */ = { isa = PBXGroup; children = ( - E624E1961A48AD719FE3F503B3753A04 /* Frameworks */, - 96C4B3C76132AEFC12A882EC6B506271 /* Support Files */, + 6642B3E667C9A30EAF0615D132B2E6B8 /* GoogleUtilities.modulemap */, + B8E1BF17ADD998CFAF9839AF429D8E62 /* GoogleUtilities.xcconfig */, + BBBA5B442142F5BD208A507B04B27332 /* GoogleUtilities-dummy.m */, + D53B9AC236D43BF9833DFEFDDB781AF6 /* GoogleUtilities-Info.plist */, + 1EF5240AC00EB95211C7D849643A4C37 /* GoogleUtilities-prefix.pch */, + 64F9AD058765F0A1CA4FF9A0E92AA138 /* GoogleUtilities-umbrella.h */, ); - name = FirebaseMLVision; - path = FirebaseMLVision; + name = "Support Files"; + path = "../Target Support Files/GoogleUtilities"; sourceTree = ""; }; - 96C4B3C76132AEFC12A882EC6B506271 /* Support Files */ = { + 929243973F84637852815F2E44CDFBC9 /* Support Files */ = { isa = PBXGroup; children = ( - D891AB31B0E8682029204C9C63F34F96 /* FirebaseMLVision.xcconfig */, + 656077C1E4147E67D93E4B396DF78932 /* FirebaseCrashlytics.modulemap */, + 885E47B012DF5AB0F7EF8BD87C91D3AA /* FirebaseCrashlytics.xcconfig */, + 25B5FC54BEC5EAC92EF781F8718DC1E8 /* FirebaseCrashlytics-dummy.m */, + 980DFD14E264C781DE92B3D7B65ABD64 /* FirebaseCrashlytics-Info.plist */, + C3306D4A62F64B9DD21462375FAC9DD1 /* FirebaseCrashlytics-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/FirebaseMLVision"; + path = "../Target Support Files/FirebaseCrashlytics"; sourceTree = ""; }; - 97732B09E38625E5AE3E0B96F8F9E68B /* NSDictionary+URLArguments */ = { + 93807DD0D74B3C1A9D472E907D3CE1B3 /* Support Files */ = { isa = PBXGroup; children = ( - DDC2CA508D1B6398276A327A4BF926D7 /* GTMNSDictionary+URLArguments.h */, - 5808F01CC644C8822ED92A6501E50346 /* GTMNSDictionary+URLArguments.m */, + 738391731D3780409C95CFD6C13F2ADD /* Alamofire.modulemap */, + 986D0DF23450B51FC428B6126A74B787 /* Alamofire.xcconfig */, + AC17E340D03C27B3DA3C106567470567 /* Alamofire-dummy.m */, + 83EBF46F0CC2AAD8253857A56F55B656 /* Alamofire-Info.plist */, + E729F5DD5D92CC666229A08FEC639219 /* Alamofire-prefix.pch */, + 090E6488650FBB4FC814DE8D96E1FF12 /* Alamofire-umbrella.h */, ); - name = "NSDictionary+URLArguments"; + name = "Support Files"; + path = "../Target Support Files/Alamofire"; sourceTree = ""; }; - 9A922B178183CF0E13F8DE20D72F905C /* Frameworks */ = { + 94FB46F969BC3858D09731C4207257E7 /* Pods-FoodScan */ = { isa = PBXGroup; children = ( - CFFE2188B67D210BC7D89EA385BA8707 /* FirebaseMLVisionTextModel.framework */, + BAF4EC4B68165797EB1BCD1504B3490B /* Pods-FoodScan.modulemap */, + 9A1F0267BF1C640035589EA87862E895 /* Pods-FoodScan-acknowledgements.markdown */, + 6EC4D9CC353F82FA11968EE8503F4A19 /* Pods-FoodScan-acknowledgements.plist */, + D1E557C160ADF50B1E64450EAC68D08D /* Pods-FoodScan-dummy.m */, + 72057B04BAE956B54AD33D5B97E16B31 /* Pods-FoodScan-frameworks.sh */, + EE71B2AB6C5C0D8BCDB03BB62E2D6B21 /* Pods-FoodScan-Info.plist */, + D9A49C45A7778F7F237891638D0C4AE4 /* Pods-FoodScan-resources.sh */, + F3BC53663530C402033E24E3E2C37349 /* Pods-FoodScan-umbrella.h */, + 853E26053E0F37133D37E03C471A7710 /* Pods-FoodScan.debug.xcconfig */, + 0612EAD4175959AC43D07BBBD03F9F82 /* Pods-FoodScan.release.xcconfig */, ); - name = Frameworks; + name = "Pods-FoodScan"; + path = "Target Support Files/Pods-FoodScan"; sourceTree = ""; }; - 9FBC1A15CCF7E242E755213ADADC1E38 /* Support Files */ = { + 9869A9CB21523F10B6CDF23C41820EDA /* Support Files */ = { isa = PBXGroup; children = ( - 1D46098E02D3DA60EBC49EAB6B36BEF6 /* Protobuf.modulemap */, - 416E8C378BE14B0CC54435CB5415CE73 /* Protobuf.xcconfig */, - 2F1732DBF4AAA30874ACF10EBA002190 /* Protobuf-dummy.m */, - 2B6FC215A9700997B393E1DA3A96F70C /* Protobuf-Info.plist */, - 24E4D2DA752C8B8232CB21A75A2C5920 /* Protobuf-prefix.pch */, - CAFF6BED9E8C596A3BB9C9DB76F01936 /* Protobuf-umbrella.h */, + 0417D6A35E2396024B8938331A1F981B /* FirebaseCore.modulemap */, + 6E54F7A0A7420003D834F95671AB5919 /* FirebaseCore.xcconfig */, + 280269965A1B9153D4595919905D1C32 /* FirebaseCore-dummy.m */, + A05EDF8917A8A4939BDD88E18D94C2A6 /* FirebaseCore-Info.plist */, + 0CC9A84D8A8E84F61DF89AD3CDD5B556 /* FirebaseCore-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Protobuf"; + path = "../Target Support Files/FirebaseCore"; sourceTree = ""; }; - A7A35BB22373C78E3B517D1A1E85C268 /* Support Files */ = { + 9EB88A15B26A131CBFF4264FFA3952A2 /* Support Files */ = { isa = PBXGroup; children = ( - D56A6B870CEC6C5A30B83967E7C27A44 /* GoogleToolboxForMac.modulemap */, - 808BC07A97958AA7B7205673330FABE5 /* GoogleToolboxForMac.xcconfig */, - 03183A06C140BE5D20891268231DFC7D /* GoogleToolboxForMac-dummy.m */, - EB03799D2358C108110A9C16A00E603E /* GoogleToolboxForMac-Info.plist */, - 421C108D404BFE37DF7BE0E355EC7268 /* GoogleToolboxForMac-prefix.pch */, - 43D7D5036ECF9E8FEAFE4619ABC286ED /* GoogleToolboxForMac-umbrella.h */, + CA4AC523F37B34B8FE5DD0C667585D7E /* UILoadControl.modulemap */, + 6AE37AA83D48E896DF9E41C68FD1FBE1 /* UILoadControl.xcconfig */, + 29FBB33EF4657BDD997B0A3BA208E37D /* UILoadControl-dummy.m */, + C5AA603C740FCF14740E7440454D2155 /* UILoadControl-Info.plist */, + D799080C216689B34B4A1EE22D74A86F /* UILoadControl-prefix.pch */, + 28BC94A61171B2A960FAE649A6D5779F /* UILoadControl-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/GoogleToolboxForMac"; + path = "../Target Support Files/UILoadControl"; sourceTree = ""; }; - AAE403F6114CF46D81420750E113555D /* nanopb */ = { + A4CEFBC4ECF6DF6D256A3658807E9BE8 /* MethodSwizzler */ = { isa = PBXGroup; children = ( - 267FF34EDA410A680D9E1F3AD3E2B219 /* pb.h */, - 6733AA09988BCE4CB795C0D83FF88E9F /* pb_common.c */, - 802907C3F0AD86A91DFC92F5E2FBAD77 /* pb_common.h */, - 9E60980352BA10E7145323A15C441BEF /* pb_decode.c */, - BE0A8B7B5F0532386438277E17BC779C /* pb_decode.h */, - 0984CA7F0E51A50B5E4C58E9791C6ED2 /* pb_encode.c */, - 1CA6DEFF9F93E293473407917C7CA492 /* pb_encode.h */, - 59B03F62431F17348710FE1CAE2EAD5F /* decode */, - 3C949DBF3AE4D77DED2B6089B76AC7E7 /* encode */, - 2725124BF3E15BA209548198DC933BFF /* Support Files */, + 6E2A64802F57405C03231A3AB3F56723 /* GULOriginalIMPConvenienceMacros.h */, + 9ED564152214B5367A9329BC2EA59F8A /* GULSwizzler.h */, + 1B8D689EEF366A0B62A1E0B85529271C /* GULSwizzler.m */, ); - name = nanopb; - path = nanopb; + name = MethodSwizzler; sourceTree = ""; }; - AB3038938E8D36CEFEECD28D34865893 /* Cosmos */ = { + A5161133C97717261CCF015B2100EC57 /* DebugUtils */ = { isa = PBXGroup; children = ( - FAB696988313D265F058AF3ECE177B1C /* CosmosAccessibility.swift */, - BD82D2B8C2CB6110A8350365F70324CF /* CosmosDefaultSettings.swift */, - E0EA302A40B69EDAB2F0FD762F23D907 /* CosmosLayerHelper.swift */, - 53F2EB0C9C67DC1A4E3BEDD6728ADD84 /* CosmosLayers.swift */, - 54B2560659D5312DCDEA36E0E58288D9 /* CosmosLocalizedRating.swift */, - DD8BE88C2C0DFDEEBF5851E93710A847 /* CosmosRating.swift */, - EBFFD004BF4761F5EC96E36BDAB5AA30 /* CosmosSettings.swift */, - CA2E39F3A7DBCB21120519698BB1A1EA /* CosmosSize.swift */, - 886486E8AABFFCCDFFD997E1F5189628 /* CosmosText.swift */, - 38D17775518BA33DA0603562EED5AD6B /* CosmosTouch.swift */, - 48BF607438180804396BA02BD2401345 /* CosmosTouchTarget.swift */, - FC0D4D8BD8938BF448EFFE673E9B0E2F /* CosmosView.swift */, - 18E7BC86535B3F1D66E9FD9B9D1664D3 /* RightToLeft.swift */, - 1F87699E341B1AD8AF84A843CBB8F738 /* StarFillMode.swift */, - 3BB9CEE6AE017B602256B28A2EAF771B /* StarLayer.swift */, - 0D9002A58D526904938D97D24D5E6E21 /* Support Files */, + D2D06725A29631194EF95F87DB852FF3 /* GTMDebugSelectorValidation.h */, + 31BB25B787D0551ACC3F03F11E85288A /* GTMDebugThreadValidation.h */, + 8758FE286402A950AE1FBC87E6F4C4AC /* GTMMethodCheck.h */, ); - name = Cosmos; - path = Cosmos; + name = DebugUtils; sourceTree = ""; }; - AC5F8DC9BBD7F7CE27C0F635314A91A1 /* Support Files */ = { + A7F44596C47DA2F10A4A6C4EB2A6DFA8 /* Full */ = { isa = PBXGroup; children = ( - 68483FD4261049AA5A9AE6924283D8F4 /* GoogleDataTransport.modulemap */, - BEED5CF6A7D848A52E8280255897EE24 /* GoogleDataTransport.xcconfig */, - 166C0C862584635307AE5FDEAC9376C3 /* GoogleDataTransport-dummy.m */, - 3AB91D60CDC1AE5D080E511386B6AC89 /* GoogleDataTransport-Info.plist */, - 61F4485DECFEE4CBD814D2EE5E2435CF /* GoogleDataTransport-umbrella.h */, + 99B354DF272A404829C053955F1FB78E /* GTMGatherInputStream.h */, + 61489CD970C15DE531CC665FEA739FD8 /* GTMGatherInputStream.m */, + 3E06DD1209AFEDF580B6C3EE530BA37D /* GTMMIMEDocument.h */, + C329D93DBDE2EA9482B8C8B03A163394 /* GTMMIMEDocument.m */, + EF5ECBC562B1FDF4618625BAC4A94EA9 /* GTMReadMonitorInputStream.h */, + A87D14B4FCB09A9CEC4CAD8527CCD9AF /* GTMReadMonitorInputStream.m */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleDataTransport"; + name = Full; + sourceTree = ""; + }; + ABDF0F45C3FD37F5BFAB5250EABA445B /* NSString+URLArguments */ = { + isa = PBXGroup; + children = ( + 774D2DB0D181878C5D1D2AC46B874EDE /* GTMNSString+URLArguments.h */, + F10A01C368ACAD36B7BAE12E008E1DC5 /* GTMNSString+URLArguments.m */, + ); + name = "NSString+URLArguments"; sourceTree = ""; }; - AE0B5F3A7E9F3841BCF4DABB8EA315FA /* Support Files */ = { + B214597EDEB701C3C67DCE837F8E2FBD /* Support Files */ = { isa = PBXGroup; children = ( - DDEB45702FD43D8FA986A9CCC98304A9 /* Firebase.xcconfig */, + C02980344A342676CECCD9CB672ED5F5 /* GoogleDataTransportCCTSupport.modulemap */, + 8DBC27521E04C38624327393D24FA68C /* GoogleDataTransportCCTSupport.xcconfig */, + 30699B4E727D50E4CF098A743DCE2EC4 /* GoogleDataTransportCCTSupport-dummy.m */, + F4D4096BBEFEBADF4261F083F8AA85F2 /* GoogleDataTransportCCTSupport-Info.plist */, + ED38CBC820EE0C6A79CE9C239EB2E916 /* GoogleDataTransportCCTSupport-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Firebase"; + path = "../Target Support Files/GoogleDataTransportCCTSupport"; sourceTree = ""; }; - AFE7F55FCB1FF4AF798D42EADB450938 /* FirebaseCoreDiagnostics */ = { + B2577979467A8E4FB621D8E194600581 /* UserDefaults */ = { isa = PBXGroup; children = ( - E7E6F6E349AA71C63CE81C7BB121C13B /* FIRCoreDiagnostics.m */, - DE851F52A9BD6146EBA589A9F2AB0C78 /* firebasecore.nanopb.c */, - AA78DF784DC85F09B4B8567481AF4DCD /* firebasecore.nanopb.h */, - 91FA415FE8121B5ED4E54104565807AD /* Support Files */, + 430B0005A77A8131FDBFCC5F7AD421A8 /* GULUserDefaults.h */, + 88C052D1555B4F9AF8353DFFA698E763 /* GULUserDefaults.m */, ); - name = FirebaseCoreDiagnostics; - path = FirebaseCoreDiagnostics; + name = UserDefaults; sourceTree = ""; }; - B33DB567C9B2AC0A6B2E7E8BE2226B92 /* FirebaseInstallations */ = { + B400BA426986629E8A3F5272F0267FA9 /* Support Files */ = { isa = PBXGroup; children = ( - F208CAEE91004371B622765C2EE44B90 /* FirebaseInstallations.h */, - 5D780E4885DF61F8ACE5E993E326A76B /* FIRInstallations.h */, - D3CA33CB9FB0457CE6E198E04AFA7455 /* FIRInstallations.m */, - 7F6D0A625FA0E8F8D7FDE1FAC5866105 /* FIRInstallationsAPIService.h */, - 891BE526713AE1493F0C2B749EF16E35 /* FIRInstallationsAPIService.m */, - 7A8D11CF18E4B70C0361E6323D3A40DA /* FIRInstallationsAuthTokenResult.h */, - 4B367AAADFD1377E71C78557E018B527 /* FIRInstallationsAuthTokenResult.m */, - 63498F2E6B363436092DC859541AC3AB /* FIRInstallationsAuthTokenResultInternal.h */, - 3BAF2BF46A81419D044D95AE0BAF84D3 /* FIRInstallationsErrors.h */, - B6FC7057CA2D222DF9BBF4DF726A545C /* FIRInstallationsErrorUtil.h */, - 82E19C4398E4735192F761570134DCED /* FIRInstallationsErrorUtil.m */, - 06DC596725F052D6851A9D913BC9859E /* FIRInstallationsHTTPError.h */, - 8EC6800E2194FC35CDACC58EE9E77D31 /* FIRInstallationsHTTPError.m */, - 1C21946C1202A1376ED7C530907C467B /* FIRInstallationsIDController.h */, - B4D131CF5C54B1CFCC36697B48234DFD /* FIRInstallationsIDController.m */, - 58E9EAA76C25EA3A08A27525FC5530EE /* FIRInstallationsIIDStore.h */, - 4441691AA83FC8F8736FA82AD0844B46 /* FIRInstallationsIIDStore.m */, - 9E27C6EA416EED3AE3325746B6D04B70 /* FIRInstallationsIIDTokenStore.h */, - F726D7F9E6E241F7E3C2B91E106EB38E /* FIRInstallationsIIDTokenStore.m */, - E3D0FD0855800AB4A51D8CADE23CAD1C /* FIRInstallationsItem.h */, - 5AC6A87CB8446EF2B81C0B0E8FB37EEE /* FIRInstallationsItem.m */, - 22DFC8C7387EA331AFDA2DFEEB16EF0E /* FIRInstallationsItem+RegisterInstallationAPI.h */, - 9B3CA16A77F491989B36DF5B57717E55 /* FIRInstallationsItem+RegisterInstallationAPI.m */, - 2A76AB70F121D087B32765FFECC2FD49 /* FIRInstallationsKeychainUtils.h */, - 224825CB45FEBBD9EC76DED37E3D8163 /* FIRInstallationsKeychainUtils.m */, - 203DBFDB75B494F2E0981411882BF48A /* FIRInstallationsLogger.h */, - BC25E46F74BB67B221D96E4987D3963C /* FIRInstallationsLogger.m */, - 82404D8A9BD36D3880C0B059448960BD /* FIRInstallationsSingleOperationPromiseCache.h */, - 14DD092C5B0FC7F9773D451C93BF0BD6 /* FIRInstallationsSingleOperationPromiseCache.m */, - 9E077B813DB0C11B78A07A65D62DA8F2 /* FIRInstallationsStatus.h */, - 7B45A4BC1D56166F0805B8957CFF0EF9 /* FIRInstallationsStore.h */, - 9416C32F1A71DE1E29C63790DEE3EA65 /* FIRInstallationsStore.m */, - 3A93DB52E62E9B50741ACD716EE9782A /* FIRInstallationsStoredAuthToken.h */, - EA860384F140B3E312803E8D8A0F8719 /* FIRInstallationsStoredAuthToken.m */, - 57B23A000E5CFE2200770C1F58803E27 /* FIRInstallationsStoredItem.h */, - 791FD48D1E614EB5054DD73F37F4C81C /* FIRInstallationsStoredItem.m */, - AE19CA4B1440E093AC7D82A72FD181D7 /* FIRInstallationsVersion.h */, - 9548675AD375D489884490EB3CDC2D71 /* FIRInstallationsVersion.m */, - 932E598928694D993AA6177606D62900 /* FIRSecureStorage.h */, - 65921BF4B990681309B59796AFA89D8A /* FIRSecureStorage.m */, - 1B4350D75ECF1AC0196C1D54266582F3 /* Support Files */, + 31A9667DF5A6155DFC5A18F4AB5E3ADF /* FirebaseMLVisionTextModel.xcconfig */, + 4CEF77DCC3FFC432F8ABFDD171F7EDF3 /* ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist */, ); - name = FirebaseInstallations; - path = FirebaseInstallations; + name = "Support Files"; + path = "../Target Support Files/FirebaseMLVisionTextModel"; sourceTree = ""; }; B48DDBC7F92A0B3F854B3B7CD9C96A8F /* Pods-FoodScanUITests */ = { @@ -3703,178 +4215,201 @@ path = "Target Support Files/Pods-FoodScanUITests"; sourceTree = ""; }; - BDFC40E27F64624319A7D44D6610B8D0 /* iOS */ = { + B743A2273B27A9DD9F521E3FC55E52C2 /* Support Files */ = { isa = PBXGroup; children = ( - 2587798F5A38D40808ECCDA0C060CCAD /* CoreGraphics.framework */, - 3A273B16B90EEDFA4F4F9FF58B641032 /* Foundation.framework */, - C4F449E0BBE717ADF94DCD5052058AB7 /* ImageIO.framework */, - 37E9C96A14308A6CF64520DC0FDE49E9 /* QuartzCore.framework */, - C885905D9C970F74BD84428DD2F4E31A /* Security.framework */, - E3D44D9B9B1992DF3B506E22E3A7FAB9 /* UIKit.framework */, + FE5829F652962087767A854A3418F239 /* FirebaseMLCommon.xcconfig */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/FirebaseMLCommon"; sourceTree = ""; }; - C3BE6DA71C790E3CE8DBB19E44B6DABE /* Full */ = { + B863883E4C63950D3D98D3248489B2E4 /* GoogleDataTransportCCTSupport */ = { isa = PBXGroup; children = ( - CC4BBEA7A1DDF7150A3D1A7A9513044C /* GTMGatherInputStream.h */, - 859B9E184A9DA3541AD938C4A3086B60 /* GTMGatherInputStream.m */, - 8EE9728FB9411EFE024602E5300DF36F /* GTMMIMEDocument.h */, - 8D2260F729153D8F8FBEA8363397CFDA /* GTMMIMEDocument.m */, - 8E440DECB4FC1E443C074059EE44B346 /* GTMReadMonitorInputStream.h */, - 350FB03C92F2891B0889975EC8CCF278 /* GTMReadMonitorInputStream.m */, + 87768C3E86840077E5C5D2A8E35FF83D /* cct.nanopb.c */, + 421E8CD0D056D0FA62150B7DA2AE9363 /* cct.nanopb.h */, + D0E8AB74A897C27C52DFCE4991212079 /* GDTCCTCompressionHelper.h */, + D0314071DC5A55E04EF4E1982F56667E /* GDTCCTCompressionHelper.m */, + FD84F1C93B89CE0A89CF4CE2266B99ED /* GDTCCTNanopbHelpers.h */, + 130A17D803FEA65ADC300A190331B88B /* GDTCCTNanopbHelpers.m */, + A6D0EE608D2546961EE1839BCF0D7B45 /* GDTCCTPrioritizer.h */, + 1F01BB716557B9777A7EC6359C0EABDD /* GDTCCTPrioritizer.m */, + 6F090DEC3AA53BE97A7F3D30EABA924B /* GDTCCTUploader.h */, + FF68EE9F1710002EA3C64F514C95AFE9 /* GDTCCTUploader.m */, + 548FA4DCF5A4AED70F8105AD0E573CC1 /* GDTCOREvent+GDTCCTSupport.h */, + 1BB8CB14A002C709BEF0A96BC7CF674B /* GDTCOREvent+GDTCCTSupport.m */, + B214597EDEB701C3C67DCE837F8E2FBD /* Support Files */, ); - name = Full; + name = GoogleDataTransportCCTSupport; + path = GoogleDataTransportCCTSupport; sourceTree = ""; }; - C8E98D43ECA8C70926041532E652471E /* FirebaseAnalyticsInterop */ = { + BDC24803E31A8342E457191D38FE2A0F /* Support Files */ = { isa = PBXGroup; children = ( - C15B2E5E078C27C0CA11AD7B5A41C245 /* FIRAnalyticsInterop.h */, - 97656E4D02F4828E131E5EE74789FBC8 /* FIRAnalyticsInteropListener.h */, - 3DF9B55D68B8172337F3F0224E3B98F7 /* FIRInteropEventNames.h */, - 7E4E4664E7EFB84A9C87FA41E0B6DE59 /* FIRInteropParameterNames.h */, - 64980AF1CD7C9CE1BA8056800FF285AC /* Support Files */, - ); - name = FirebaseAnalyticsInterop; - path = FirebaseAnalyticsInterop; + E3D2382BEDB9915DD87E32A0F8EF5D38 /* FirebaseAnalytics.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/FirebaseAnalytics"; sourceTree = ""; }; - CCE3A75253C90DF5B17725826EDD958F /* PromisesObjC */ = { + BDCEB8DC8C7DCC36D51DD7EBD8EBB9BB /* encode */ = { isa = PBXGroup; children = ( - 3EBD3A1A7B5988E26A3170AA87A6C66B /* FBLPromise.h */, - D87B2986AD1A7E859A4B03964DCBD57C /* FBLPromise.m */, - FCF9FE949C25BF907987EC9135AF6859 /* FBLPromise+All.h */, - 319D8A27DB2C0C2D3AE5DB5508FCC503 /* FBLPromise+All.m */, - 4ED9E03F79A89856F65FB0A48CB5CA70 /* FBLPromise+Always.h */, - 258F6A0FFC8420F4879E82C0A76530DB /* FBLPromise+Always.m */, - 7C543B4564E64B8071CD3CD5A9C3C361 /* FBLPromise+Any.h */, - 201DFD6D4C1C8688B222BD2D08B09D9B /* FBLPromise+Any.m */, - 8B5D9FFC88CF8583B440A17D5F1C6E4D /* FBLPromise+Async.h */, - 2BBD3F5741D2641ECE344F7095D282A0 /* FBLPromise+Async.m */, - 6BE1EC704E4983E25C22741FD2BEFE0F /* FBLPromise+Await.h */, - AB4F9BF31FD2C166A607E55642E362CD /* FBLPromise+Await.m */, - 282F89832FA8018FFB67B1D0E076A93D /* FBLPromise+Catch.h */, - 9CE948D6E4FC087AC1AAFA68E8232F2D /* FBLPromise+Catch.m */, - 3C6BE4A52089B9E15E09DDAAFD330A9A /* FBLPromise+Delay.h */, - 6A80868BA24C82AC0B479D107B4CF849 /* FBLPromise+Delay.m */, - 64CF2473E7C1FBAA9B6BDB6645C706D0 /* FBLPromise+Do.h */, - 63353F24AA1808665111DD6D42739C20 /* FBLPromise+Do.m */, - 11D1246044E4C62FC53A82B49BB4FDD7 /* FBLPromise+Race.h */, - 6BB2EAB7C9C2E639F73625E60EC25DBB /* FBLPromise+Race.m */, - 5B2AA935B07EC799232D6DB26E584850 /* FBLPromise+Recover.h */, - F064649FD24DA580E8F889A62CAA27DC /* FBLPromise+Recover.m */, - 266FA7B9697725B97625EBEAEC260167 /* FBLPromise+Reduce.h */, - 59F28B53A8B3410F953153B8BF1BFB40 /* FBLPromise+Reduce.m */, - 854A2BE8A740BFF4CB53562D6EEB7F60 /* FBLPromise+Retry.h */, - DCD00BDD932672D1A88C3BB8EEEEA3B4 /* FBLPromise+Retry.m */, - 950BD2AE277B9A8A1231A1885BD7B600 /* FBLPromise+Testing.h */, - D37FCD3205910563C2025DE3FFD2F158 /* FBLPromise+Testing.m */, - 9D5990921AAC2DFFAA355B5F6D1CA41A /* FBLPromise+Then.h */, - 7F7041BF799BCD3BD2A58F339BC80AAE /* FBLPromise+Then.m */, - B616C44669FB2DBFA8DB638065BF5224 /* FBLPromise+Timeout.h */, - 27D3CC13234B911423F70C4485592250 /* FBLPromise+Timeout.m */, - CCD59B550B2415659118252954BCF3C1 /* FBLPromise+Validate.h */, - 8CD65B08397C7683A542085DFCB1D673 /* FBLPromise+Validate.m */, - 6FFBF7CA05659D5DE401970DE4BB9996 /* FBLPromise+Wrap.h */, - 3098FB3BE79FB8DB799D50C6A5AFCEBC /* FBLPromise+Wrap.m */, - 4170B9A0E6D64C8E5F469BF40090172D /* FBLPromiseError.h */, - 5C7ADEA21D74B0C0D64779EDAB44F791 /* FBLPromiseError.m */, - 66D90F6D20FF66048AA11A313212119A /* FBLPromisePrivate.h */, - 127714FBDBB436BFCD96B4A7967A516B /* FBLPromises.h */, - 63750EA6F8F2A9EC3829E0D11CEEAAF0 /* Support Files */, ); - name = PromisesObjC; - path = PromisesObjC; + name = encode; sourceTree = ""; }; - CE7C1A0E4737CD6FB0895323773D9F97 /* Pods */ = { + C827DB81CACDEE338F9D064BA038FC23 /* Support Files */ = { isa = PBXGroup; children = ( - 02A17F6C8DBAF98751A008D9B3444209 /* Alamofire */, - AB3038938E8D36CEFEECD28D34865893 /* Cosmos */, - F752A281944912F322813391D65C1DF6 /* Firebase */, - C8E98D43ECA8C70926041532E652471E /* FirebaseAnalyticsInterop */, - 4D1BA6A29D4DB342EFD952C3577D26AA /* FirebaseCore */, - AFE7F55FCB1FF4AF798D42EADB450938 /* FirebaseCoreDiagnostics */, - 865C7CE3327B160EA173FA590998434C /* FirebaseCoreDiagnosticsInterop */, - FF1F781A66B0F7FB20A891147ABB7F16 /* FirebaseCrashlytics */, - B33DB567C9B2AC0A6B2E7E8BE2226B92 /* FirebaseInstallations */, - 8964F8E1BE77BD516627DAA79404F3AD /* FirebaseInstanceID */, - 2F49CB1D52670D6EE85EC4B76C3432DC /* FirebaseMLCommon */, - 96AEEDB1A01A37E68CE8EBD228E54793 /* FirebaseMLVision */, - 16FAEF8DDA012BBCF8F6060BA35ABB47 /* FirebaseMLVisionTextModel */, - 39D699FDC87C160D0AFB7B0E1073C557 /* GoogleAPIClientForREST */, - DDA71034BDD6DB50EF8C573D5476CC48 /* GoogleDataTransport */, - 8E7987CD914AF7D56B5A29F88ECAEF11 /* GoogleDataTransportCCTSupport */, - 1299D549E2DCE38DDEB639F001D4EC3D /* GoogleToolboxForMac */, - 60B2E839303CF7AFB1DF76E61A3C70B9 /* GoogleUtilities */, - 33D99EC31DB8F51FD3DB9E79044D419E /* GTMSessionFetcher */, - EF0C53AACBC30131186446678767BDD2 /* IQKeyboardManagerSwift */, - 2AFAF2E21EB4276B3BB84BA27BAF9175 /* MarqueeLabel */, - AAE403F6114CF46D81420750E113555D /* nanopb */, - 5253214A9252A70D76FAA70FFBA3C3C3 /* NotificationBannerSwift */, - 599C56ABEFAB8DB5D928FEDB1195B240 /* Popover */, - CCE3A75253C90DF5B17725826EDD958F /* PromisesObjC */, - 10385508FAD0D037013A51BEEF7034F2 /* Protobuf */, - 15F06566D3E156DD04279B96DF9C5990 /* SDWebImage */, - E4875B678E1BB8E3AB4FE760CA380AB8 /* SnapKit */, - E252792328D9515739FCBE507A7A6FD2 /* SwiftyJSON */, - E34A74E2C85FF0130FD1A13CC783460F /* UILoadControl */, + 11DBDBE1FA748C6E5D17890F6D4ECD28 /* SwiftyJSON.modulemap */, + 444FB82D62A7EFBFC2D15017F2FF2A61 /* SwiftyJSON.xcconfig */, + E72CF57FB522BD8CD0392B10511DF1E2 /* SwiftyJSON-dummy.m */, + 5F2AD7C8315050FB5990D66C9318ACF7 /* SwiftyJSON-Info.plist */, + 583D18506697DD3C104E445C846C060B /* SwiftyJSON-prefix.pch */, + C8C317561E7A87A548178712E84A069E /* SwiftyJSON-umbrella.h */, ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/SwiftyJSON"; + sourceTree = ""; + }; + C9BB97EF0211C608F7998E80A76A86D4 /* Support Files */ = { + isa = PBXGroup; + children = ( + 60F9612A453444FCA55F84072677AA43 /* NotificationBannerSwift.modulemap */, + FCFCD65F9FCF18875443EB66BCF3C6D2 /* NotificationBannerSwift.xcconfig */, + A15557175136F268BA1D5E803768BDD3 /* NotificationBannerSwift-dummy.m */, + 0966DF21ED8FBCAF42EEFC2EC23E7E20 /* NotificationBannerSwift-Info.plist */, + 870D155E6C225BF12CF707D1146DA2AF /* NotificationBannerSwift-prefix.pch */, + B86F07C36621AA59AC076729A888DA0C /* NotificationBannerSwift-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/NotificationBannerSwift"; + sourceTree = ""; + }; + CD7816A52439C3FDAB8786C1BE0B512E /* Core */ = { + isa = PBXGroup; + children = ( + 7C63626B0A12B8A5A1257F74CA8438C9 /* NSButton+WebCache.h */, + 07D0FD720B3EA629BB319385FBF8DC12 /* NSButton+WebCache.m */, + AB0AFF6ACF73131B19D9A1636B66B5F0 /* NSData+ImageContentType.h */, + B89CBDFCDB9CD05CF62C5F713FF21E5D /* NSData+ImageContentType.m */, + A5B5AAEF42D3C97C4F84A8A2E2A120FC /* NSImage+WebCache.h */, + 9A716956C46DE637638256D75FA70ED7 /* NSImage+WebCache.m */, + 49D23190F62F83B77B85BC33B001580A /* SDAnimatedImageRep.h */, + C2E98EC05769543C0D402ACE95405C39 /* SDAnimatedImageRep.m */, + F59C252750FD6059166EEF6BF3260FED /* SDImageCache.h */, + B30B5A958997E51478E3609B1EA611DD /* SDImageCache.m */, + 5613B88756D0E546B20AAAD9CC2F6DD1 /* SDImageCacheConfig.h */, + FE39F4B25F3D27D7AD4DA7C2EFE25A35 /* SDImageCacheConfig.m */, + B6EF8D3F0368EC84D4830CA7EDE09842 /* SDWebImageCoder.h */, + 6C3F6736ABACB330BE50C02A4CBA2DC1 /* SDWebImageCoder.m */, + 875E9BA7ED0D7702086CD9C80EA12079 /* SDWebImageCoderHelper.h */, + CBE3CFC948CA8A3DC3AA8A6EDD12B777 /* SDWebImageCoderHelper.m */, + 5E65AF6DDB5E842F9E17608A00D308A4 /* SDWebImageCodersManager.h */, + 32F66E69732C725336DB59E668627E99 /* SDWebImageCodersManager.m */, + 1A09D4791E05F8030D28E2120BB1E538 /* SDWebImageCompat.h */, + F021AD5A740ADB4A289B409D92D0C745 /* SDWebImageCompat.m */, + 5F6BA3A58CE78CA2615BAF39B3AB4F30 /* SDWebImageDownloader.h */, + 6EBB8C6DB4EB95771BE884F1DA8E6C72 /* SDWebImageDownloader.m */, + 27EAD66CFC2F731E3BC66E47C538258F /* SDWebImageDownloaderOperation.h */, + FA74F102D0437705B1B20EDCAD15A673 /* SDWebImageDownloaderOperation.m */, + F2867A2497AD088799DFEE361ACDEFC2 /* SDWebImageFrame.h */, + 1B987C7413496B790D285162F9AFFD1F /* SDWebImageFrame.m */, + 8AAD88F510F99CC7FABAECCC29637E8F /* SDWebImageGIFCoder.h */, + D13EEB6AC5D6A59BF6CE2466EB746541 /* SDWebImageGIFCoder.m */, + 57F2DE8B50EBB150065C90CDDDBF2D0B /* SDWebImageImageIOCoder.h */, + 4F8468D85B50B911C7C8220C206BEB73 /* SDWebImageImageIOCoder.m */, + 51EC6ACC97E7399DB23C696642311F5A /* SDWebImageManager.h */, + 2BCA8D3CB0C9B7E3BF941DCDA9E3D6AD /* SDWebImageManager.m */, + 5F48EAF5B1765FD5C67BF733A1C1CC20 /* SDWebImageOperation.h */, + DE4B3BB5175D01156AAA692EF3ADE151 /* SDWebImagePrefetcher.h */, + BCF9781B75895C4AF33976BD77281358 /* SDWebImagePrefetcher.m */, + A03FAC71C01C9782C2C5462CEDCC0860 /* SDWebImageTransition.h */, + CEA25900D804AA753A5477197C443259 /* SDWebImageTransition.m */, + F668B38444CB840584F0F6793CCC9783 /* UIButton+WebCache.h */, + 2C54DA13D3992D8D4AE712D0CF6EF0A5 /* UIButton+WebCache.m */, + ED9ED272E5C44F9CEDB513CA53E70C0B /* UIImage+ForceDecode.h */, + 90750149A0B4986E330696CB6D9140D7 /* UIImage+ForceDecode.m */, + FCA3A9B67E505A3E07A808F66562CB4D /* UIImage+GIF.h */, + B42426476D12774187E98D5BFE4CE700 /* UIImage+GIF.m */, + 3ABED19E78AA6ED81CFC8C4FDD08F15C /* UIImage+MultiFormat.h */, + BC128AE86A5BBF7A3C9CB909FEAFABF2 /* UIImage+MultiFormat.m */, + 0F5ADEC945E94C9EB23054E7EFD12E57 /* UIImageView+HighlightedWebCache.h */, + EEEEC8052BAD16EFB327F0E0769A8DFE /* UIImageView+HighlightedWebCache.m */, + B4B90F4759A59FDEB7D13017C7F8E7A7 /* UIImageView+WebCache.h */, + 6E4A08143C05FB2285348129671C6295 /* UIImageView+WebCache.m */, + C8282674C2FF7CED5AAC2D694564F791 /* UIView+WebCache.h */, + 9A10D6ADD3816381FB13D9347A47C6FB /* UIView+WebCache.m */, + 0333EB1F3DDE9106F15CF73BD6D1308A /* UIView+WebCacheOperation.h */, + 0D3672BEF934C6201FCDEF325C82FDE7 /* UIView+WebCacheOperation.m */, + ); + name = Core; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - DC8D9FDF754C27D8547F7074EA6E2513 /* Frameworks */, - CE7C1A0E4737CD6FB0895323773D9F97 /* Pods */, - 70B030E4B653B6DEA2D07CF51EC93E50 /* Products */, + 3BCE6607D7824D2FF67A86F6F4B1C4E9 /* Frameworks */, + 3AB60A6A4D2F739C993F620AFE5918C6 /* Pods */, + 051E9A9AB4BCA93C6BEA03535E170DE8 /* Products */, F1392FEA785F3F8A486EF6EAB28F5BEC /* Targets Support Files */, ); sourceTree = ""; }; - CF94F0CB5460A98E34322E4627058801 /* Support Files */ = { + CFFC22FCFA1035BE04692357CB8D7A09 /* FirebaseMLVision */ = { isa = PBXGroup; children = ( - 6DD79C6BD45710B578DC2FDAE3C70588 /* FirebaseMLVisionTextModel.xcconfig */, - 98436BF1430F345E4AC00515C914DB9C /* ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist */, + 8615BA2129BD92D286B8D04487276B4B /* Frameworks */, + 8F216480737710EAACE7BB77A208733C /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseMLVisionTextModel"; + name = FirebaseMLVision; + path = FirebaseMLVision; sourceTree = ""; }; - D3A328DE1C503AC4136E2BD387B73EF4 /* Support Files */ = { + D3808F7FFB2B4F975A96DA963F29CEE3 /* nanopb */ = { isa = PBXGroup; children = ( - 6D6AB13299DBB67E1B2A7FACC9C179F3 /* GTMSessionFetcher.modulemap */, - 8F5ABFD6F8F732B49A94525D6B224699 /* GTMSessionFetcher.xcconfig */, - ACA695ED1F9A5F82B342F36A415A7547 /* GTMSessionFetcher-dummy.m */, - 55D586A4A3D42F745F23E57428DF4299 /* GTMSessionFetcher-Info.plist */, - B6048F7B5686FAE2A99E49ECF605A636 /* GTMSessionFetcher-prefix.pch */, - 67D0AB0491E971C3CDC647CEA4879910 /* GTMSessionFetcher-umbrella.h */, + 688A171F40FB62D45AD64B0C1C9E7394 /* pb.h */, + 093B13CA861F15F182154A5D7A7F5780 /* pb_common.c */, + 3E139283E7181753A9ACB0A04829085D /* pb_common.h */, + 82FDCAC7EB103EDDDB46B963CB310CCA /* pb_decode.c */, + 95044EEF634A25554E16826F63061D15 /* pb_decode.h */, + 6434285884CCC1C8C1198696EBAA760B /* pb_encode.c */, + 239E37FFD903E487676ACF03D36562BE /* pb_encode.h */, + 5A047375BE336284FEE2FCBEA397F1B3 /* decode */, + BDCEB8DC8C7DCC36D51DD7EBD8EBB9BB /* encode */, + 8BE639DC5BBDAC522806BC735F2C199D /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/GTMSessionFetcher"; + name = nanopb; + path = nanopb; sourceTree = ""; }; - D3E906588461552B1053254DCB3E691C /* Support Files */ = { + D4273B7FC1C3C57151A8F37ACD0A94BB /* Support Files */ = { isa = PBXGroup; children = ( - 2D31B9DEEC1844EC5474CE993E447D92 /* SnapKit.modulemap */, - 5D9D50DF6FA7538AC67A9D05A74250B6 /* SnapKit.xcconfig */, - 776B1FAC2ACEB5193D8B1576DA70AA01 /* SnapKit-dummy.m */, - 15EF81BA44E0B67624E10344C43BC403 /* SnapKit-Info.plist */, - 5CA3CA2E176301FDF59F7CFE1C700C62 /* SnapKit-prefix.pch */, - 4B36E59DE0AFCF6A36C015A4E662F2B7 /* SnapKit-umbrella.h */, + D90DE3A990E0795620C3977A6C8B9119 /* FirebaseCoreDiagnostics.modulemap */, + 6C60FB2ED34CBD26773DB0F6764018CB /* FirebaseCoreDiagnostics.xcconfig */, + A6BCDD11117CB1DC2249A03FF8D8205E /* FirebaseCoreDiagnostics-dummy.m */, + 35A916B9C6E6E4354C17DB02CCC7FB25 /* FirebaseCoreDiagnostics-Info.plist */, + E801717D20A5DEA230B9BD043045FA27 /* FirebaseCoreDiagnostics-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/SnapKit"; + path = "../Target Support Files/FirebaseCoreDiagnostics"; + sourceTree = ""; + }; + DC0A009D1D353A1D6A72C5889BC04916 /* Reachability */ = { + isa = PBXGroup; + children = ( + 77A292702E2FBAC8AD02DC344D780FB0 /* GULReachabilityChecker.h */, + D2DD04DD658908470D9230CE21116A32 /* GULReachabilityChecker.m */, + C3D175FAC843230B40804C9AABC78F2C /* GULReachabilityChecker+Internal.h */, + D29555AB3A177AA112364A787BD17DC0 /* GULReachabilityMessageCode.h */, + ); + name = Reachability; sourceTree = ""; }; DC50626F68D033EE1377DE1D487DFB4F /* Pods-FoodScanTests */ = { @@ -3893,182 +4428,133 @@ path = "Target Support Files/Pods-FoodScanTests"; sourceTree = ""; }; - DC8D9FDF754C27D8547F7074EA6E2513 /* Frameworks */ = { + DF7252983EDBB90ACD76EFEE47862A1F /* iOS */ = { isa = PBXGroup; children = ( - 0938778595C2A65E2DDB8C9F047EB98F /* GTMSessionFetcher.framework */, - C1D91B2B960B40A99CCAB95DC63A549D /* MarqueeLabel.framework */, - 59CFB9BF52D6D2B8C840FC1EEC7BD0FE /* SnapKit.framework */, - BDFC40E27F64624319A7D44D6610B8D0 /* iOS */, + 5DD978D3E2D5E3DE19E4856ADF51782C /* CoreGraphics.framework */, + FA2C42B936582BFCAB4E25D29895A04A /* Foundation.framework */, + 92AF84D108A3ED39356D4684FEAF13AE /* ImageIO.framework */, + 21A0E1A218555ACCB8A88FF0306CC814 /* QuartzCore.framework */, + D00219A677D07FDE9DC4472059174638 /* Security.framework */, + BDBC5364C79661CE791B40872C3CF379 /* SystemConfiguration.framework */, + 6AAAC4E1CEA86B11DFFC6B6267516883 /* UIKit.framework */, ); - name = Frameworks; + name = iOS; sourceTree = ""; }; - DDA71034BDD6DB50EF8C573D5476CC48 /* GoogleDataTransport */ = { + E00F0C0B2CF3A513AB7237636FBCF1B2 /* Defines */ = { isa = PBXGroup; children = ( - 6A721E1F4C09F25061FE467CE9A55165 /* GDTCORAssert.h */, - 2F89F3E850D1089EE2755116B5552347 /* GDTCORAssert.m */, - D9656D73F6326C2C6D091CA637913782 /* GDTCORClock.h */, - 30EDB22C1AB6AC0AF295CC0430B7D9FA /* GDTCORClock.m */, - 8EFC228D5B2133241C33181151479827 /* GDTCORConsoleLogger.h */, - 8D9B9364A85FB1F020B82B5C670FB69B /* GDTCORConsoleLogger.m */, - A5B29540360B578E162D4DA6A13F4AD9 /* GDTCORDataFuture.h */, - 82ED0D7D28C0AAD3FB4CCF03BBB98BA0 /* GDTCORDataFuture.m */, - 8B413CD1D1AA8166A738B85461793087 /* GDTCOREvent.h */, - 5F3FF679B21267949BD62DE76656C654 /* GDTCOREvent.m */, - D1A20A78F89127940FEC73E5ACDE332E /* GDTCOREvent_Private.h */, - 6D1D09BBDDD594313C5C8084323CFD26 /* GDTCOREventDataObject.h */, - 7D80E7B7470CD69EFB6DEBC534477EB5 /* GDTCOREventTransformer.h */, - E3B91EAE51685CB45E88B699BF67DE9B /* GDTCORLifecycle.h */, - 24BD3A08F1877181B4373653FB8409A8 /* GDTCORLifecycle.m */, - 4D1D2BC98D57B6EB6D9C53A5531ADD10 /* GDTCORPlatform.h */, - 531492CCB14B7590BCDF5EAE4E14C6C3 /* GDTCORPlatform.m */, - D1CB907638B66D17671F1124658DFB2C /* GDTCORPrioritizer.h */, - 77DBB73A007448CA49D20461A1EF734A /* GDTCORReachability.h */, - 8E872C7CD89F6ECEE914249080A1F110 /* GDTCORReachability.m */, - 5121B18C4C47856AA0A7C5E2A74811FB /* GDTCORReachability_Private.h */, - 6295582113239D8EA93A32599EC97C92 /* GDTCORRegistrar.h */, - 9B70A658316941CCE6652CD6F7CCA566 /* GDTCORRegistrar.m */, - 5914452F33D455958E4EA029771440EA /* GDTCORRegistrar_Private.h */, - 3FB13B546485E68E8BE06ADA86833840 /* GDTCORStorage.h */, - 362AF784EB515EF48142BC54D3776B99 /* GDTCORStorage.m */, - 4F6A1CCF7CD6C5D2F7BD47341FDC7870 /* GDTCORStorage_Private.h */, - EAACB773CC8F7C58C17AAA8BFF53C048 /* GDTCORStoredEvent.h */, - 155157D7F64D7D917D0C4E5F7613E7DE /* GDTCORStoredEvent.m */, - DC40D7A7B5515F3005AB72D9B1EE2719 /* GDTCORTargets.h */, - 65346E0768C41576066538B80D96D959 /* GDTCORTransformer.h */, - C5B94621C5C335C790753FE8D82B4D9E /* GDTCORTransformer.m */, - D60F1FB4F3DD45B0A607FD408B40E00D /* GDTCORTransformer_Private.h */, - 08980813BE7C96CE90EDBDA52842E9CD /* GDTCORTransport.h */, - 88FE76301D83CFDD602C6F81865DCD92 /* GDTCORTransport.m */, - E8997CAC5DDD62C8F198C85783A5C015 /* GDTCORTransport_Private.h */, - 1E2593D63D2D3351911A218E362FD2D5 /* GDTCORUploadCoordinator.h */, - 4486640994B008578642E91ACE50AA2D /* GDTCORUploadCoordinator.m */, - A02CA8EF1E6542EE0DF194B65B19A1FC /* GDTCORUploader.h */, - 7F7498B7158567865DA5ADFC975F182A /* GDTCORUploadPackage.h */, - FCED56686462EC9815FE5557B90FC526 /* GDTCORUploadPackage.m */, - 7A3A7F1F513EB566E4FB76B576839FA8 /* GDTCORUploadPackage_Private.h */, - E8CF2A9FE2D0DA1A690F5941F2AF780F /* GoogleDataTransport.h */, - AC5F8DC9BBD7F7CE27C0F635314A91A1 /* Support Files */, + 42EF23EDB16F9ADFD52166DD280B7642 /* GTMDefines.h */, ); - name = GoogleDataTransport; - path = GoogleDataTransport; + name = Defines; sourceTree = ""; }; - DDD54CDF838DC2B4E77D25D543D754D1 /* CoreOnly */ = { + E2F4659D060E0DFDE4B5CF0E1BC0D573 /* GoogleUtilities */ = { isa = PBXGroup; children = ( - CD62F08BFCBBCDC30EEC20C1E4C8E1BB /* Firebase.h */, + 3FEDE491C5AB6AD3115B5F4ED42654E2 /* AppDelegateSwizzler */, + 763EC801898622B31B7B2188472A62B7 /* Environment */, + E4BE83810A4CFA86D1AC099C493E08C7 /* Logger */, + A4CEFBC4ECF6DF6D256A3658807E9BE8 /* MethodSwizzler */, + 7352E6D1A1BF57776B67D33535719412 /* Network */, + 88A59E6D7720266914E018A468330ADB /* NSData+zlib */, + DC0A009D1D353A1D6A72C5889BC04916 /* Reachability */, + 91CA9C571AEF3E57A05F299B28547D89 /* Support Files */, + B2577979467A8E4FB621D8E194600581 /* UserDefaults */, ); - name = CoreOnly; + name = GoogleUtilities; + path = GoogleUtilities; sourceTree = ""; }; - E252792328D9515739FCBE507A7A6FD2 /* SwiftyJSON */ = { + E4BE83810A4CFA86D1AC099C493E08C7 /* Logger */ = { isa = PBXGroup; children = ( - 8F8F2221E66D0C348ACA1048E6D19CFF /* SwiftyJSON.swift */, - 159F7DBE0B33584A87ACBA9B2A0A0821 /* Support Files */, + DBC52A9CA0891ED6E4C219182CD35BAA /* GULLogger.h */, + 792A088BBC14897EF8C671CEB7D926FC /* GULLogger.m */, + C40BDFE3ABF169C2869E2DB9150C2E83 /* GULLoggerLevel.h */, ); - name = SwiftyJSON; - path = SwiftyJSON; + name = Logger; sourceTree = ""; }; - E34A74E2C85FF0130FD1A13CC783460F /* UILoadControl */ = { + E7D54303F89BFAC036ED875B4985E57C /* Core */ = { isa = PBXGroup; children = ( - 8CE6057074760B846C0A925B4DDA4247 /* UILoadControl.swift */, - E26AFD0FAC32D54175BBA636BE6790C7 /* UILoadControl_UIScrollView.swift */, - F3305631256EFE50A25E6E7CC2C94555 /* Support Files */, + 67C91EA4590CB25FA62EEED6254B1509 /* GTMSessionFetcher.h */, + 8672ECD58E76B351EB951B0ECCB6F547 /* GTMSessionFetcher.m */, + 2EEEF5A00A5F6A9786E438B8F1B94A9C /* GTMSessionFetcherLogging.h */, + BFC87053382666919FF291B7F579093A /* GTMSessionFetcherLogging.m */, + C4E2C7E2225634F7AEA87AC4F2C36528 /* GTMSessionFetcherService.h */, + A3F1F807324C805FEAEE4C2A28A10115 /* GTMSessionFetcherService.m */, + 5FEB30EA412FEF9376DC8F0CD6097C03 /* GTMSessionUploadFetcher.h */, + 0D2F5669976341F2D3BA082DD254619A /* GTMSessionUploadFetcher.m */, ); - name = UILoadControl; - path = UILoadControl; + name = Core; sourceTree = ""; }; - E4875B678E1BB8E3AB4FE760CA380AB8 /* SnapKit */ = { + E87EC80AA55D7D936A099F2644ECA367 /* Support Files */ = { isa = PBXGroup; children = ( - 2C637715DB1FAF7D73CB9DE3C781952F /* Constraint.swift */, - 1A1869AFB1D2703DDFC7634663C008DB /* ConstraintAttributes.swift */, - 49BB00934662594786C89A059A3F1481 /* ConstraintConfig.swift */, - 7F5CA172C235EF27B842D7819DB8F96F /* ConstraintConstantTarget.swift */, - 093E345076B1AF0B27D988AB88966279 /* ConstraintDescription.swift */, - 44DBA675699A3BE5A0A3D3DF4EDAC2AA /* ConstraintDSL.swift */, - 78A08062647DE9ADED79950AD8534A5B /* ConstraintInsets.swift */, - 4954CF7BBF11C5BD61AE27EC956A2F89 /* ConstraintInsetTarget.swift */, - E1E44ADBEC8809E89D6F963CFC9A1191 /* ConstraintItem.swift */, - 535A5DB4914ECE054815924C587F62FF /* ConstraintLayoutGuide.swift */, - A5F8C1268B62ABDEB0E23A55C15A96D7 /* ConstraintLayoutGuide+Extensions.swift */, - C02B778495605C23E49DFAC7CBAB7A60 /* ConstraintLayoutGuideDSL.swift */, - 6022D46D8E7B0A19CA237A02C5368C84 /* ConstraintLayoutSupport.swift */, - AF9F9B6D2825D73EBB937DDAC0D58CA6 /* ConstraintLayoutSupportDSL.swift */, - 12D0C9787477C44B59BBF21522A930E9 /* ConstraintMaker.swift */, - AED8F3FAEBA75A84D5078228900B3540 /* ConstraintMakerEditable.swift */, - B7E2C10502F965A7733AB0239BCB969D /* ConstraintMakerExtendable.swift */, - 835FFE1EE660F00742EDE566DC8C0071 /* ConstraintMakerFinalizable.swift */, - 7D29DFA073D48CD5A9B4A4CF05F0F6CD /* ConstraintMakerPriortizable.swift */, - 319C7914F0943C339C779DE2644681C9 /* ConstraintMakerRelatable.swift */, - 13562C939F629FC48B16DAA5A110EF57 /* ConstraintMultiplierTarget.swift */, - 341AE2DF4BBC4C6CE3738E6333BBDEEC /* ConstraintOffsetTarget.swift */, - B622A8D1F54BBED4389D1B839FF1B563 /* ConstraintPriority.swift */, - 23ED872068113D20E34A7C0FE767EDB5 /* ConstraintPriorityTarget.swift */, - C415AE2ACCD452A3A536AE6F60F77824 /* ConstraintRelatableTarget.swift */, - 29CFF77175EDE90350F936491E5B8487 /* ConstraintRelation.swift */, - 40766AB63041EE60BE9F2EDBACFB2033 /* ConstraintView.swift */, - C7D20154AB3EAD7670D3A4306B078A11 /* ConstraintView+Extensions.swift */, - B7D9DAE98F6A05D6DEB7D4E62DD96FF7 /* ConstraintViewDSL.swift */, - 3F69B235623ECD9E8FCAF5AA00C3E835 /* Debugging.swift */, - EC0C9F37619C09DCD1A68B50C27DDB7C /* LayoutConstraint.swift */, - 32FAF3F255049AA63D9A41DE1788BB37 /* LayoutConstraintItem.swift */, - 327EF4186935E9FAA6E228C4FAC352E0 /* Typealiases.swift */, - C4F8A30BFC013CFCC515DCD7610BF203 /* UILayoutSupport+Extensions.swift */, - D3E906588461552B1053254DCB3E691C /* Support Files */, + F51CD44B97224A5D9DD556F8B4D186BE /* Protobuf.modulemap */, + D7F714C81BAA8BFC990B197AE6C14F7B /* Protobuf.xcconfig */, + 7E6562CCBA21E2C419E71B6A7C116FB1 /* Protobuf-dummy.m */, + 184A2295511060131A9D8BFA755EACAA /* Protobuf-Info.plist */, + E06F827CC2D41CCC101F3D4DAC2EFD31 /* Protobuf-prefix.pch */, + 367C6B028D79F5B23435147118F9E13C /* Protobuf-umbrella.h */, ); - name = SnapKit; - path = SnapKit; + name = "Support Files"; + path = "../Target Support Files/Protobuf"; sourceTree = ""; }; - E624E1961A48AD719FE3F503B3753A04 /* Frameworks */ = { + EC1EA9E0C20137E608D68FCD16EDED5C /* Support Files */ = { isa = PBXGroup; children = ( - 6E7C8F27BDEBAC64DD1863C505D6EEEA /* FirebaseMLVision.framework */, + BE5DA8A520A5D3E33B98DFAE48EE8122 /* GoogleDataTransport.modulemap */, + 6F49AEABFA6067D98833975B51CA5A2C /* GoogleDataTransport.xcconfig */, + 7D80D599DE91F60B3796CC3065E45C42 /* GoogleDataTransport-dummy.m */, + 71060BE5279D4F67508CEC8C73704332 /* GoogleDataTransport-Info.plist */, + B607B08EA816E182180FB6DC29BE3878 /* GoogleDataTransport-umbrella.h */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/GoogleDataTransport"; sourceTree = ""; }; - EBC92B399C8784F124CD9E58C9100CF9 /* Support Files */ = { + EEAE5AD07D377EFF049CF5567D39DE8E /* Popover */ = { isa = PBXGroup; children = ( - 635BE606BF44BFA02DC61E12425FEA96 /* FirebaseCoreDiagnosticsInterop.xcconfig */, + 1989B68DD23DE1903315884F1105D5F0 /* Popover.swift */, + 37ACF64E50C0CB048DCBD56EE3E7A769 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseCoreDiagnosticsInterop"; + name = Popover; + path = Popover; sourceTree = ""; }; - EF0C53AACBC30131186446678767BDD2 /* IQKeyboardManagerSwift */ = { + EF801A85CDDD6B396572B954CBBA8693 /* Vision */ = { isa = PBXGroup; children = ( - C22282E424832931EFA1A677984EE790 /* IQBarButtonItem.swift */, - 01CD1FE18BF54DFF9F4F3DA4FD25CE80 /* IQInvocation.swift */, - F13C1B8CB53691E6EF4DB57E19D99531 /* IQKeyboardManager.swift */, - B6710F34F5F4B757F6F0A5D28A1E285B /* IQKeyboardManagerConstants.swift */, - 0C5639F125C522F00798D72DFA89AD7B /* IQKeyboardManagerConstantsInternal.swift */, - 15D08CFDB7349E8ED65953ACC0B6A055 /* IQKeyboardReturnKeyHandler.swift */, - 1AD06A2F1B253EA35A18E0C78DC2AB25 /* IQNSArray+Sort.swift */, - EA2CE876547BAF9E77462B6D141B9B98 /* IQPreviousNextView.swift */, - 46EFD1A3E1027B6D956C0D8FFA4966AD /* IQTextView.swift */, - 82C91DD3874865CDE95CBAFC21933749 /* IQTitleBarButtonItem.swift */, - 89C7B2B743E4E4F4DF5D3863D29C5256 /* IQToolbar.swift */, - 193B805353E7AA02E9A0398BAC804137 /* IQUIScrollView+Additions.swift */, - 25D9219D08773A7DC222DA0E8CF74521 /* IQUITextFieldView+Additions.swift */, - 51B0B12FC5FC8C70AD4FC4B57E819D15 /* IQUIView+Hierarchy.swift */, - 848D5CCF7ED612EF7C532A88636622B9 /* IQUIView+IQKeyboardToolbar.swift */, - D44D3EF70F3C66467AE20E8925F76FC7 /* IQUIViewController+Additions.swift */, - 2497AFC5211EF577FF292B0B9598C2A5 /* Resources */, - 2419412A2912EC12B918C400C81CE353 /* Support Files */, + 49FD7BE32233BC859577783DA76B75F0 /* GTLRVision.h */, + CD6FD85142C2A91F5EECBA1503EF722D /* GTLRVisionObjects.h */, + 4937363A943B257FBB42CAB737C03234 /* GTLRVisionObjects.m */, + D48E4F3BC2703AD574E410736B763CC3 /* GTLRVisionQuery.h */, + F7513CF33C759FCF94FE6E009EE608CC /* GTLRVisionQuery.m */, + 8D34CB021E9B756A7D61C505A04130F0 /* GTLRVisionService.h */, + 8AA1FE0BEB26F1CDFA775BD8D343EB4C /* GTLRVisionService.m */, ); - name = IQKeyboardManagerSwift; - path = IQKeyboardManagerSwift; + name = Vision; + sourceTree = ""; + }; + F0524E83D6C38365C6AAEF1B483116A1 /* Resources */ = { + isa = PBXGroup; + children = ( + 5025A6C7D9DFAE3E534E9229F49480A2 /* region_proposal_text_detector_tflite_gray_quantized.bincfg */, + 391613B67A215C98C7D97486ABA1C8A8 /* rpn_lstm_engine_tflite_latin.bincfg */, + 13D19DD605D444B64502AE7B2FDFF421 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite */, + 0214B19253ADE0303ADA5C9060E94E34 /* tflite_lstm_recognizer_latin_0.3.bincfg */, + 98BD0980B72A480B208719EC7ADB48F9 /* tflite_lstm_recognizer_latin_0.3.class_lst */, + 05943823E3A2C03711307DF590F14FA5 /* tflite_lstm_recognizer_latin_0.3.conv_model */, + B8F366E4FDAB5177B2984C747EABC315 /* tflite_lstm_recognizer_latin_0.3.lstm_model */, + ); + name = Resources; sourceTree = ""; }; F1392FEA785F3F8A486EF6EAB28F5BEC /* Targets Support Files */ = { @@ -4081,415 +4567,333 @@ name = "Targets Support Files"; sourceTree = ""; }; - F30ED89B48161D990E4034790B6C4C8C /* Support Files */ = { + F46325F35BEB578539BD7AD71E833796 /* GoogleDataTransport */ = { isa = PBXGroup; children = ( - ED96643CC58AE148B6526496B00AC53E /* MarqueeLabel.modulemap */, - 2683EF76CCA3268707D37B93DF70B48F /* MarqueeLabel.xcconfig */, - 893C6126F6D870A9BB1AA65A903EDED6 /* MarqueeLabel-dummy.m */, - 705E31027B56932A9873A670F7B2D153 /* MarqueeLabel-Info.plist */, - 80EE37D4DFE79229BBBEBA21590B22C2 /* MarqueeLabel-prefix.pch */, - 451228DEC8192B14C30C754943441C22 /* MarqueeLabel-umbrella.h */, + 4868BF4C27B6481C8D90033528A5036A /* GDTCORAssert.h */, + 7A35BA55E255F5F6DBA88EA37DEE0748 /* GDTCORAssert.m */, + C7624AE339E6677CDB95C5CF481B90ED /* GDTCORClock.h */, + D308D3D540FF8A98BA5F1DD51462710F /* GDTCORClock.m */, + 8FE5EEA27261B1375AE3BDD541EE1254 /* GDTCORConsoleLogger.h */, + 28BA169B0A4D3D1C2FEEAA3AE66334C3 /* GDTCORConsoleLogger.m */, + E15836C6C0A7AA69F0A8B4C5EBE84C83 /* GDTCORDataFuture.h */, + 3FD438F64569883B1D9782170BB796C1 /* GDTCORDataFuture.m */, + A71E05A22F2F46F1DE54110802F64207 /* GDTCOREvent.h */, + 0B90C7CCCCCA7810A02DB09FA5B54F15 /* GDTCOREvent.m */, + 59960483DE4BD69A47EA24EDA93B2600 /* GDTCOREvent_Private.h */, + BBFEC177A6E3D6C2C760B3B3E80AEC49 /* GDTCOREventDataObject.h */, + EFA3424CBDF3DC062C59A533A9AD3640 /* GDTCOREventTransformer.h */, + 80B23A6B5299A4B5F64391FFA406BB84 /* GDTCORFlatFileStorage.h */, + D1C80D4E67922558FA02BD7DEBC197C6 /* GDTCORFlatFileStorage.m */, + 93E669E024A9C324703E103045EB5ADE /* GDTCORLifecycle.h */, + 17ACDB5A1C70A76D5BAFEDC4DFAC77F1 /* GDTCORLifecycle.m */, + F2F671EF359514344110E1A6C6513F5D /* GDTCORPlatform.h */, + C7C3F6AF0D8BABE7FDC8712B1F5F1579 /* GDTCORPlatform.m */, + 139B329630BBF9CED91B62FDB1D7E229 /* GDTCORPrioritizer.h */, + 134A1D5D0508074FBA514F7B8A3623C4 /* GDTCORReachability.h */, + 5F92C0BD929D3D857C2249F06AC51AA4 /* GDTCORReachability.m */, + E7BE7E52F9753DF02532199A1ED22365 /* GDTCORReachability_Private.h */, + 2BC270E7A37E28A48C912291F69B3A50 /* GDTCORRegistrar.h */, + 63DDEDD0C856EBB6762A9B2FFC35A341 /* GDTCORRegistrar.m */, + A90756D50AD67413EF59F34F99FF9966 /* GDTCORRegistrar_Private.h */, + 88E8FA21C2C995E2DE375A77D940797E /* GDTCORStorageProtocol.h */, + 67DB30018627619C8E5A77A5EBFDA06D /* GDTCORTargets.h */, + F6733B8AD09ED4F227B9AB96E553FAD6 /* GDTCORTransformer.h */, + 212F6B35EBC2A6D01955AAA719934409 /* GDTCORTransformer.m */, + 205BC90A49F80DF580E56C108FA87694 /* GDTCORTransformer_Private.h */, + F86913BE9E5990C8A247454C6FD92952 /* GDTCORTransport.h */, + 386A8E0809348AA528207E8FB76EAF7B /* GDTCORTransport.m */, + 9CAD568BADDA44EAD0FC34F8A5248863 /* GDTCORTransport_Private.h */, + 9AB1122A38DFFE7D2821901A4B85C9FC /* GDTCORUploadCoordinator.h */, + 2B972E2CCDEFF41259D1B8F4C6A63113 /* GDTCORUploadCoordinator.m */, + F8DFAE3961EC1EB6B68B23AA000008F9 /* GDTCORUploader.h */, + 64AFA26B34ED43217F1339B482553C77 /* GDTCORUploadPackage.h */, + 4D5372F1F4BEA951D0F7D6ACFA9BE340 /* GDTCORUploadPackage.m */, + 05E1206C6455EC8D681044B41290831B /* GDTCORUploadPackage_Private.h */, + 07C78533F1F45D2DD5B6C6E6B62678F6 /* GoogleDataTransport.h */, + EC1EA9E0C20137E608D68FCD16EDED5C /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/MarqueeLabel"; + name = GoogleDataTransport; + path = GoogleDataTransport; sourceTree = ""; }; - F3305631256EFE50A25E6E7CC2C94555 /* Support Files */ = { + F50CD9D25973FB72A6926E978CA2B397 /* CoreOnly */ = { isa = PBXGroup; children = ( - 9E0A32F5618D1BA3256BE01FAC3F69CE /* UILoadControl.modulemap */, - D545D687E14A116AED262D7A19881936 /* UILoadControl.xcconfig */, - D33BF0CAF409D4BB4DB6C3A1AD096FD1 /* UILoadControl-dummy.m */, - 6479B0D9C62EA63D4B9E1D6D433F96AF /* UILoadControl-Info.plist */, - AC46BB1E9C4A4306D717511E9322DEB3 /* UILoadControl-prefix.pch */, - F0D2D4B878E192ECDA911312F1436ECF /* UILoadControl-umbrella.h */, + 2ADC5CA68CECF700C3C17ED9BC2FB369 /* Firebase.h */, ); - name = "Support Files"; - path = "../Target Support Files/UILoadControl"; + name = CoreOnly; sourceTree = ""; }; - F4233D82750315160B05F9643850E21F /* Support Files */ = { + F6123101DFE879D8BFFAF0F7DF550577 /* Support Files */ = { isa = PBXGroup; children = ( - BCB1ED1A81CC8E434AAD8911CE62056A /* Popover.modulemap */, - 1488555ACB4273A4F0AF2E780589ABF6 /* Popover.xcconfig */, - E362774F34E9BD34184C08EA8DD1BB46 /* Popover-dummy.m */, - 90CD17C3ADC01EDE6B41DF729A536C61 /* Popover-Info.plist */, - D7C2D469BBB0107E4D57D6A2A0044615 /* Popover-prefix.pch */, - 3BA85A51C9E91E3CA088199F4987B4C3 /* Popover-umbrella.h */, + 3EF05A836BCA31AB6C4BCA4EC0CF55CF /* MarqueeLabel.modulemap */, + 790FB337CB3D48F038502957C9E7B50F /* MarqueeLabel.xcconfig */, + C4C091C5640211AC0377400F24710CB4 /* MarqueeLabel-dummy.m */, + 25474AD3FF714DE564D9D67FE1E1BE0D /* MarqueeLabel-Info.plist */, + 91F7642F08807BC5E7C3640FB62A6019 /* MarqueeLabel-prefix.pch */, + EC42A2D8DA964A04C23B6C2CEF22BB06 /* MarqueeLabel-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Popover"; + path = "../Target Support Files/MarqueeLabel"; sourceTree = ""; }; - F752A281944912F322813391D65C1DF6 /* Firebase */ = { + F6FC51A7A30731496DB91FCFD27D94A6 /* FirebaseCore */ = { isa = PBXGroup; children = ( - DDD54CDF838DC2B4E77D25D543D754D1 /* CoreOnly */, - AE0B5F3A7E9F3841BCF4DABB8EA315FA /* Support Files */, + E9375E5A51A18FCE3FDFFE4FD030CC84 /* FIRAnalyticsConfiguration.h */, + 5FFBF5D62B05098AF9222782F4EB7DD3 /* FIRAnalyticsConfiguration.m */, + E12461453BE9CE51FDB5DF143433B64C /* FIRApp.h */, + 4B031085E5C84236632A7007133A456D /* FIRApp.m */, + CBA2D83ABB9E02704D87D23F684F8742 /* FIRAppAssociationRegistration.h */, + 2C37E7FC5903950C698066DC99ACE8E1 /* FIRAppAssociationRegistration.m */, + 54930AF3B8763427DBF26A17AE1A8B37 /* FIRAppInternal.h */, + 39A2A2DE78B5E5FFF0A4E9D0CCD8F62A /* FIRBundleUtil.h */, + 1A6796375F866CEEF3580B74B0550633 /* FIRBundleUtil.m */, + 022C228464D99A818F61DB286DBF61B3 /* FIRComponent.h */, + 6BF04219A8377224598FD0599769B67E /* FIRComponent.m */, + C5B76EF81EE74DF255F60549BEE27727 /* FIRComponentContainer.h */, + 48DF30206279FB72BE451C4FB90B1A6C /* FIRComponentContainer.m */, + FD96061CC20B830F6CE26A7F76EB1B9C /* FIRComponentContainerInternal.h */, + 7AD1435E5922F82C3CF870713CAA2A51 /* FIRComponentType.h */, + 9BB9596D503C86F7F2065444DDB84827 /* FIRComponentType.m */, + 6EE9CC88ABF44A98E879106870CD16E3 /* FIRConfiguration.h */, + E61A190AD0C18E12D2BFC70E264C3DED /* FIRConfiguration.m */, + 9107E76702327301FACE2A9084DA1EBA /* FIRConfigurationInternal.h */, + 95C6439C4C345180A37846249F31EA6D /* FIRCoreDiagnosticsConnector.h */, + 88A66EE16D5DD49C030E675386619E9F /* FIRCoreDiagnosticsConnector.m */, + 92ED7374776AF1C3E5F24CC572FFF509 /* FIRCoreDiagnosticsData.h */, + 26912EC85A74DDF4B0BA50AC69C11BA6 /* FIRCoreDiagnosticsInterop.h */, + 6AAD23DB2114CDEA011CC8D664F88146 /* FIRDependency.h */, + C5099C01F9833C4D029213F012E1C997 /* FIRDependency.m */, + 55539A4B57C4995E81FD746A2D1DC10A /* FIRDiagnosticsData.h */, + 235E9D3725149138D33E735E968FD8FD /* FIRDiagnosticsData.m */, + 8EF2E459E39E7C0EAFF99ADE1ACCB5B5 /* FirebaseCore.h */, + F451E7C07367BCE2D34E10AEC4F600FC /* FirebaseCoreInternal.h */, + F09A3296168934638F64B46CF41995B9 /* FIRErrorCode.h */, + F6BC1647CFCDEF84F23D2829ED9815D6 /* FIRErrors.h */, + 89A1337A4F8F571535750271C0F695CA /* FIRErrors.m */, + 85C522EA015D2014A62E44BF97E474F0 /* FIRHeartbeatInfo.h */, + AAC40467721C333F59A071097C7B805C /* FIRHeartbeatInfo.m */, + 20305497DC1C08C7DCBADB16AFBF68E0 /* FIRLibrary.h */, + DE676C20BA5E8E2F0645FD42523B4125 /* FIRLogger.h */, + 583AFC6ABE4B81426C75F5352BFA117E /* FIRLogger.m */, + 35A4E8F1C7D92C0DE6F138DFCF76B0FC /* FIRLoggerLevel.h */, + DE8215F2A8C9100A42FF778E2A976B62 /* FIROptions.h */, + 4F1AF55FFEE3A1788A1BCE03AF1733F6 /* FIROptions.m */, + 98ADA7DB12BFD493283AD661F37FA722 /* FIROptionsInternal.h */, + F8D98E690A13704A526738272D44B4FA /* FIRVersion.h */, + D66E2E5FD3C7053DDBE051C293B89875 /* FIRVersion.m */, + 9869A9CB21523F10B6CDF23C41820EDA /* Support Files */, ); - name = Firebase; - path = Firebase; + name = FirebaseCore; + path = FirebaseCore; sourceTree = ""; }; - FDB3A5949B132B5EDFD8DAE077E87E80 /* Support Files */ = { + F7814C4ED9E4841AA84474E00303D29B /* GoogleAppMeasurement */ = { isa = PBXGroup; children = ( - FDC150CC824B5CA3690BA00BBAC7ABCA /* FirebaseInstanceID.modulemap */, - 1110EF1602A48045BFB5CD62C1448ABA /* FirebaseInstanceID.xcconfig */, - 6696CF2DA9EA4B19E6DD987E6A1AB1D4 /* FirebaseInstanceID-dummy.m */, - 33284E1B68E3AC4EE9FA4DA535549978 /* FirebaseInstanceID-Info.plist */, - 6479D558AD8DC116862189B6D60F8D52 /* FirebaseInstanceID-umbrella.h */, + 254191F55D477C791923BD02E37ED30A /* Frameworks */, + 384506C98D880BD1C7580418718AE629 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseInstanceID"; + name = GoogleAppMeasurement; + path = GoogleAppMeasurement; sourceTree = ""; }; - FF1F781A66B0F7FB20A891147ABB7F16 /* FirebaseCrashlytics */ = { + F8496AA2944D615B349C2D7607EA25B0 /* SnapKit */ = { isa = PBXGroup; children = ( - CD2DBDBAB6DD4904B55F16662B7404C3 /* dwarf.h */, - 6F328A56E9BE0C247F8E6B7697811341 /* FIRAEvent.h */, - 50FB6DDDA51F598D677773AF968B4364 /* FIRAEvent+Internal.h */, - 9FA11DCEA363993FE8CE9C6E6C5E5319 /* FIRAEvent+Internal.m */, - F87675A0A7691C6FE3B72DDF14BC11C8 /* FIRAValue.h */, - 25BBF0E8A1196A9718C1F6DB27FE4773 /* FIRCLSAllocate.c */, - C2B843789E16BCC61CA5BDB3696D6218 /* FIRCLSAllocate.h */, - F286D0CF9D2BB9280500D0BEF371437D /* FIRCLSApplication.h */, - A67F2D5C0B267B8AE5B6AB53A97FD9F8 /* FIRCLSApplication.m */, - A63947CA56F525451EC85A120D05B366 /* FIRCLSApplicationIdentifierModel.h */, - 1EEE194C41C9436DD8E5845F68DFC92F /* FIRCLSApplicationIdentifierModel.m */, - 2AF42CD73A32C7487FEC389000C629A0 /* FIRCLSAsyncOperation.h */, - DBEE2C6BDD7084250BF1F9AE7E48355E /* FIRCLSAsyncOperation.m */, - A7EC94F4EFE13D665496152D832B7A44 /* FIRCLSAsyncOperation_Private.h */, - DC09C9F7C27FB94CE2433C0685E3567A /* FIRCLSBinaryImage.h */, - 8A7A6C342F6B92699B71DE0DA7B1D896 /* FIRCLSBinaryImage.m */, - 72EC7F91D344643F41CF915D81B8B2F8 /* FIRCLSByteUtility.h */, - BA9FBD8266751176A47CC0F8BD8D25DC /* FIRCLSByteUtility.m */, - F96127A7EB0FF0D4ABACDC5F0D7840CF /* FIRCLSCodeMapping.h */, - D35B6D2BF425B37177EF471F4F18710D /* FIRCLSCodeMapping.m */, - 040AB2F48CDA4A7BDB22A6B5083778A1 /* FIRCLSCompactUnwind.c */, - 4DBC7EC2E446B2213C7A6FAA6AB6B89B /* FIRCLSCompactUnwind.h */, - 375DA008C108E01D23483CE9E823FAB7 /* FIRCLSCompactUnwind_Private.h */, - 83F1DDB932632B4DD06F4721ED74A3E0 /* FIRCLSCompoundOperation.h */, - C8CB0A6FD375E60EC6C7F2BE145167E2 /* FIRCLSCompoundOperation.m */, - 9CF8766249D479341F19643A4C9B5B6A /* FIRCLSConstants.h */, - 0FD5851DC0FF8867204AB393DB83EB1A /* FIRCLSConstants.m */, - 054878626B006D9E9F4B316D44600EF3 /* FIRCLSContext.h */, - C65B081187E922A0B90A445F6672724A /* FIRCLSContext.m */, - 780758F2A840C39D82F041257B97156C /* FIRCLSCrashedMarkerFile.c */, - E29863F377F20E0CFC8174915A3F71BC /* FIRCLSCrashedMarkerFile.h */, - 2C1A7EE05E7799B1B6BC98EE6F6DE974 /* FIRCLSDataCollectionArbiter.h */, - 75C73D74F6CA0825E437A5FDFB321B42 /* FIRCLSDataCollectionArbiter.m */, - D4B0021FAAF4ACC70B30B11C41289250 /* FIRCLSDataCollectionToken.h */, - 3BCB8AB3C1D9C74B8D629978F586C43B /* FIRCLSDataCollectionToken.m */, - 2F8388FEC897E63D9660F11A2A8AA536 /* FIRCLSDataParsing.c */, - 73A4AAFFB42047DE5748C887E84260A7 /* FIRCLSDataParsing.h */, - 434404EE6D8E9FCE1C0E9DB0530A7129 /* FIRCLSDefines.h */, - 597C31CDDB44D8A21D91DB1DEB3F37C2 /* FIRCLSDemangleOperation.h */, - FC847D7DB0EDA275068FA9AB945E80E4 /* FIRCLSDemangleOperation.mm */, - 6AD01007824C54540DB65EF94EB3607C /* FIRCLSDownloadAndSaveSettingsOperation.h */, - D49A1F32A758094F2EBF25B4249E1473 /* FIRCLSDownloadAndSaveSettingsOperation.m */, - 1E38FB537FC7C95F88981FA1E4B34FEF /* FIRCLSdSYM.h */, - 9436204F1C57B64F9BCC86706E0234B5 /* FIRCLSdSYM.m */, - E6FEE0247C04AB1CFED53E4C9A392EBD /* FIRCLSDwarfExpressionMachine.c */, - 5E260648839D5419E4C43B93CB461BF8 /* FIRCLSDwarfExpressionMachine.h */, - 9A97731FCD86C676B5D97B628FEC623A /* FIRCLSDwarfUnwind.c */, - A3E67E16664E6B5E1F7F411C1BE8D1D7 /* FIRCLSDwarfUnwind.h */, - 1379A57FD6611401929ECDF70BEB99AE /* FIRCLSDwarfUnwindRegisters.h */, - 6412959C0EBCB040F4F6F101BBA6A24D /* FIRCLSException.h */, - A6BC6154B749D01976EDFED4892F71E3 /* FIRCLSException.mm */, - 2D17953EFDFF6E4BBCB3C59548D9231B /* FIRCLSExecutionIdentifierModel.h */, - BD565B727B823597DEC8B6B741B29046 /* FIRCLSExecutionIdentifierModel.m */, - C0D23030E4CAA269EEF302C589DA27FE /* FIRCLSFABAsyncOperation.h */, - 19C1C5CA8EBE688B9847923F29F59151 /* FIRCLSFABAsyncOperation.m */, - 576A3321DB0BA7D37857A03D773EDB1F /* FIRCLSFABAsyncOperation_Private.h */, - A0EBCFE68DF574D54C95FB927D30118B /* FIRCLSFABHost.h */, - 9DB22045CD4C649059F31F7CA943F2A8 /* FIRCLSFABHost.m */, - 2E87A50F233BCC9A8C9914A5F18417B5 /* FIRCLSFABNetworkClient.h */, - DDDD86A49B7424EEDDAF144D6ED345B3 /* FIRCLSFABNetworkClient.m */, - 3E4A62825AA0DCEF2D86BBAD53AB3679 /* FIRCLSFCRAnalytics.h */, - 23ED48620ACC2AC79566B026D0E70624 /* FIRCLSFCRAnalytics.m */, - 839D57FA23500F82E99EC270441A1D2D /* FIRCLSFeatures.h */, - EA44B8091E855FDD1C920BB1AF6A20EB /* FIRCLSFile.h */, - 033AB68F190A55A86B819B7215636FCD /* FIRCLSFile.m */, - 255CE099268D211663D284BCE9B1E950 /* FIRCLSFileManager.h */, - FA646A6AE440903CCA45526069627326 /* FIRCLSFileManager.m */, - 48ADC679761B72BF33567D82B33E6C02 /* FIRCLSGlobals.h */, - 8DA2E5FC7E49DD5DC7EC83646E8511DD /* FIRCLSHandler.h */, - 626CDAD14468A2014DF369DB0FFAB161 /* FIRCLSHandler.m */, - 38EF0456BE7D62568E7D2334514F15D8 /* FIRCLSHost.h */, - 7E875E6EEC39B148F428DFD27DD2E0BF /* FIRCLSHost.m */, - F54532B094D38025D8B8B1A42EDE2C41 /* FIRCLSInstallIdentifierModel.h */, - 4CCC63C53E659B7CD758BC7736EC3AC8 /* FIRCLSInstallIdentifierModel.m */, - FB0B320DFE9149A67E2111C9C7A38343 /* FIRCLSInternalLogging.c */, - 7D0CF2750AF18E72FF48A645A75FE237 /* FIRCLSInternalLogging.h */, - 9C8692EC9659CE4C4984C64CC0394900 /* FIRCLSInternalReport.h */, - 99747D3F0ED6B1BC9A97EC6DAA816647 /* FIRCLSInternalReport.m */, - D1BD030ACD34773526FA4A3DD5E9A07A /* FIRCLSLogger.h */, - 09B7B88E8AA77EB15862F30BD8F95E61 /* FIRCLSLogger.m */, - 3FBBD3AE477C1B0D664239B6D0E08E81 /* FIRCLSMachException.c */, - 965C6A2BC9CF0493003B4A8B1CED31A2 /* FIRCLSMachException.h */, - A378F74C2B30915962F15789EB48DDE3 /* FIRCLSMachO.h */, - 381DD9D94ECE295C7E294372185119E5 /* FIRCLSMachO.m */, - 6F78691F4AD4DC3E4B0BD01B9F775D7C /* FIRCLSMachOBinary.h */, - C53F2833FA43F1A51E0DFBB4442506AE /* FIRCLSMachOBinary.m */, - 490C465F2430F06F699BF12E18A223D0 /* FIRCLSMachOSlice.h */, - BB611DE355A471B6AE18D0BF50576813 /* FIRCLSMachOSlice.m */, - 961FE5DA7A557A3AD55F9A5A8983FB8C /* FIRCLSMultipartMimeStreamEncoder.h */, - 9E88BC3293DF92604679A39B3B5D6862 /* FIRCLSMultipartMimeStreamEncoder.m */, - 887F101E335BC1A2923F2BAC05ED0E41 /* FIRCLSNetworkClient.h */, - 603388BFDE5C928F931FAD31C811857C /* FIRCLSNetworkClient.m */, - F623A14595B84524A34B7A9B47316B01 /* FIRCLSNetworkOperation.h */, - 4DB4EF7834D7EFD81FD6355407955D0E /* FIRCLSNetworkOperation.m */, - 0E1FE890549221386D156915EA82E179 /* FIRCLSNetworkResponseHandler.h */, - 8B63497EBE0FE73C5D392AAD155ACF71 /* FIRCLSNetworkResponseHandler.m */, - 5E62512A4DA50CC43D7A4D3C23406E65 /* FIRCLSOnboardingOperation.h */, - 068571CC13B36BF09077C43C4B109E9B /* FIRCLSOnboardingOperation.m */, - BED6B3F4E2B6A1B3C0F44985AC9CE9A6 /* FIRCLSOperation.h */, - 8650E521A61E8BE4A953D3091334B690 /* FIRCLSPackageReportOperation.h */, - 487CFE32B477A3010456AA421F166450 /* FIRCLSPackageReportOperation.m */, - B3D5FAEB0E3594B3A200989FFF2365AB /* FIRCLSProcess.c */, - 44E0DC87C16CC2B49E30627BB4DEE356 /* FIRCLSProcess.h */, - 1375FF40108F4191B783D01D64AA241F /* FIRCLSProcessReportOperation.h */, - 2FE771C9DE0E5B6FDE315CD589F36060 /* FIRCLSProcessReportOperation.m */, - 7305DDA91D75040E07C6F53F287D37B1 /* FIRCLSProfiling.c */, - C593786CC71BA458ACA15A655630E238 /* FIRCLSProfiling.h */, - 171C03052F2860CA008BEB65E3DC28AA /* FIRCLSReport.h */, - 46CD6DFB17C05EE4400922A86FF50288 /* FIRCLSReport.m */, - CFE157363AEE3534CF29968BBE06DD82 /* FIRCLSReport_Private.h */, - 5B153406034F5B3A7AD41BC5D2CFE0E2 /* FIRCLSReportManager.h */, - CC257B3206836A2C2E9B96A2AD3D472B /* FIRCLSReportManager.m */, - 4B7B6106302B839251AB6A30F813B3DF /* FIRCLSReportManager_Private.h */, - C1073D238EEF63A4AB0710C67BFB7561 /* FIRCLSReportUploader.h */, - D7481D3C9BC93CE9F2F7B4BB5A531F1F /* FIRCLSReportUploader.m */, - AE799177B9845221FDA6466E85E8C87B /* FIRCLSReportUploader_Private.h */, - C818E2DD7B3A324E3E9DBDB3FB0990AD /* FIRCLSSerializeSymbolicatedFramesOperation.h */, - 176CB56552D2469ACF1CD5FFD351F090 /* FIRCLSSerializeSymbolicatedFramesOperation.m */, - E3E5DF82558B6C423EA12FD57C8AEFAA /* FIRCLSSettings.h */, - E93E7764D0B63DD82D2F83AD79F7D75D /* FIRCLSSettings.m */, - F110E5D5A1E15B6038114DC225EF15F6 /* FIRCLSSettingsOnboardingManager.h */, - 0C59522825B27A36B289F27CEFC154BE /* FIRCLSSettingsOnboardingManager.m */, - 04F063FF318A4B91B8420AFB36CD1E84 /* FIRCLSSignal.c */, - 76B5DBC9758F9E0F59265342FFA1D677 /* FIRCLSSignal.h */, - 90DF3B3C1602D193244A41EE77E63C78 /* FIRCLSStackFrame.h */, - 21A490CB5C95FC7D5694E080845DD5A8 /* FIRCLSStackFrame.m */, - 70B5F612EB8CDEB28B257CC71D136F8E /* FIRCLSSymbolicationOperation.h */, - 1F1DBF2473A97D7ACF4EAA2DBE04C3FF /* FIRCLSSymbolicationOperation.m */, - 6966CB27FB7C2C9ADD860651D7071B40 /* FIRCLSSymbolResolver.h */, - 439B76C1B3F44D348FD9F13349BD3182 /* FIRCLSSymbolResolver.m */, - 951F1E65B45612A23C586BCE421508E3 /* FIRCLSThreadArrayOperation.h */, - F2BBF2BDEFECA1B1716B882317510C6A /* FIRCLSThreadArrayOperation.m */, - 475779BFB5687083CF00267E4DDE1767 /* FIRCLSThreadState.c */, - 6F31644C8FE7BD91FFB64A4D23E222A9 /* FIRCLSThreadState.h */, - 99989B9CF90F157DAC39D721A06393BE /* FIRCLSUnwind.c */, - CB11B0973DB51B95046870D13A199DC9 /* FIRCLSUnwind.h */, - CFE53228CC4463A73B9943588D83F655 /* FIRCLSUnwind_arch.h */, - 4568A166657BBE5FE273258DB62601B5 /* FIRCLSUnwind_arm.c */, - 445E4524C9DC66D2D8FE50C212E669E1 /* FIRCLSUnwind_x86.c */, - 6CB8D94894E86DA7169D762EFD06ACFA /* FIRCLSUnwind_x86.h */, - F5FEC5F6547065D280C86B68BDD1F031 /* FIRCLSURLBuilder.h */, - 8D11F933B4868F0A41C81A00648D9E62 /* FIRCLSURLBuilder.m */, - CCD17DE4F0C590404D8FC9209692B049 /* FIRCLSURLSession.h */, - DFD535381D0BF921CDCFB6383956524C /* FIRCLSURLSession.m */, - 0F521A514C493423191A951CFF5719BD /* FIRCLSURLSession_PrivateMethods.h */, - 89DD663D68B01CEDA8D5DD7A7688C917 /* FIRCLSURLSessionAvailability.h */, - B0832DDCBCCC1C16A0D214E80D690565 /* FIRCLSURLSessionConfiguration.h */, - BE6C0EA7ED43F0AF19D397798238EE5C /* FIRCLSURLSessionConfiguration.m */, - F7F34E4CD48A7AB9B65B6708052AFD9F /* FIRCLSURLSessionDataTask.h */, - BA8F0D2EB14F6AC0A360F44F0A92F447 /* FIRCLSURLSessionDataTask.m */, - 61B4F36D04915CE9BBF129530A6123C4 /* FIRCLSURLSessionDataTask_PrivateMethods.h */, - 4CA6119847F253761E8302FDC8978E02 /* FIRCLSURLSessionDownloadTask.h */, - AB9B3B4064F68DE03277AD108EE049B0 /* FIRCLSURLSessionDownloadTask.m */, - CE92C815E6AFDA4D30B939AADE7BF4FB /* FIRCLSURLSessionDownloadTask_PrivateMethods.h */, - 438FC9F5ED768BF7FBFA02AF8645C2AA /* FIRCLSURLSessionTask.h */, - 25E8DE32B6819C68165F985EB03710CD /* FIRCLSURLSessionTask.m */, - 2D1F925DC7D23DF0C9E09EF7C2F797B8 /* FIRCLSURLSessionTask_PrivateMethods.h */, - EFDEA1E617338F534B47C46BD1B16AAC /* FIRCLSURLSessionUploadTask.h */, - 6B93B7633B3835BC2664252BBF915287 /* FIRCLSURLSessionUploadTask.m */, - C44667F7CDE660CC6F42C1DA7E215BCD /* FIRCLSUserDefaults.h */, - 1ACCBC89C99D609BF01757C4EC4BD55A /* FIRCLSUserDefaults.m */, - BE51E96565306AF33366D3F92C9364F1 /* FIRCLSUserDefaults_private.h */, - B2922AC23A8F254705AEE1AF3A26BD8C /* FIRCLSUserLogging.h */, - 3E5E7C766835A6036388966ABA21D350 /* FIRCLSUserLogging.m */, - 94BF47EC123E8C3167197CCC5BD08416 /* FIRCLSUtility.h */, - 600B6F83EF7B44500B98D24520380A70 /* FIRCLSUtility.m */, - 427CEA2CCD49F57ED3522AFE5BEC21F0 /* FIRCLSUUID.h */, - F99824C3555A8D7E59614043711BCD95 /* FIRCLSUUID.m */, - F2A86CEF89DA5A288FC9BFD66702A3EB /* FIRCrashlytics.h */, - 24A2DAF94D528FA79A9FAE94E80B4A2D /* FIRCrashlytics.m */, - 6C0408A380188AFFE476A976684A18E9 /* FirebaseCrashlytics.h */, - 3DEE5899F7A7FD826311421D6F97FCE2 /* Support Files */, + 595A00EBEEAEE7EBE765D7677320BC81 /* Constraint.swift */, + 552B7FB1A0E6BC43BF15DF2694D9243B /* ConstraintAttributes.swift */, + 1160D20C92B38262D3D9BD8BF2119929 /* ConstraintConfig.swift */, + 0BC3AA083FC71A68E475020560D4CCA1 /* ConstraintConstantTarget.swift */, + 8730D0545872B4BD2DDE842BC90B3954 /* ConstraintDescription.swift */, + B95DB0867FADA2A2F2F6ABC69ED6B384 /* ConstraintDSL.swift */, + CAABA1152FEECDC18858D8E1A53F644D /* ConstraintInsets.swift */, + D81DA9BEA08FB5F6384AD27158E26032 /* ConstraintInsetTarget.swift */, + 7D1D1009EAE5830C9212CC5F2500AFB3 /* ConstraintItem.swift */, + E5DA0BBC9268CE131BF23F7FC770D010 /* ConstraintLayoutGuide.swift */, + 73E788E85BE2CDE5B0D40EB349965B88 /* ConstraintLayoutGuide+Extensions.swift */, + 264E9AD7682249782A53637E3072949D /* ConstraintLayoutGuideDSL.swift */, + 67D3F7AC315B6BE6E9F01300F7203EC1 /* ConstraintLayoutSupport.swift */, + 226F71F6381F7D176D1C56BB6F6DBEB9 /* ConstraintLayoutSupportDSL.swift */, + B34FC5648E501433F254403DEA249CF5 /* ConstraintMaker.swift */, + 43FE428A754FAEA4E158F716D66750DE /* ConstraintMakerEditable.swift */, + 99FCE997354E582E71C1CEE6E969FFD8 /* ConstraintMakerExtendable.swift */, + 622607CEEB27681907DAB43BEA6EBD9E /* ConstraintMakerFinalizable.swift */, + FF72499E8A41B9F454630A3894279346 /* ConstraintMakerPriortizable.swift */, + C1476393CB7CEAA1C2BCBE7EA578D20D /* ConstraintMakerRelatable.swift */, + 651C10E8048DD2929D532D8DDBC94A69 /* ConstraintMultiplierTarget.swift */, + C7797E42C4F235E88A5D752724D0AB04 /* ConstraintOffsetTarget.swift */, + 8303D2DFE07660B53A9C808E252F1405 /* ConstraintPriority.swift */, + E45425CA794044E1EA7DEABEA6351928 /* ConstraintPriorityTarget.swift */, + 31394F59DC41ACD27AB09A63D19BC9B2 /* ConstraintRelatableTarget.swift */, + BEE9D298AB277618B1DCAE3DAED0E9E3 /* ConstraintRelation.swift */, + 6481E12EAA7D31E5531B2A3DC3EF712D /* ConstraintView.swift */, + 2714913F1B548FBE2E8BBAF940D91087 /* ConstraintView+Extensions.swift */, + C7B1EAA4A477F38205B2C733480E41E6 /* ConstraintViewDSL.swift */, + 646ED4A760A0521BE81802444DF21785 /* Debugging.swift */, + 9D3DF79AC8E88AC59554AA6F862F5074 /* LayoutConstraint.swift */, + B999E871C10C540CF2E89F6E7C7E6804 /* LayoutConstraintItem.swift */, + DA51117AA2B7CD75CC823BCCB6DAFBE2 /* Typealiases.swift */, + 5A15759568DD9077D5819E87E23463B1 /* UILayoutSupport+Extensions.swift */, + 7BF5152A62560321F64F601D607A49A1 /* Support Files */, ); - name = FirebaseCrashlytics; - path = FirebaseCrashlytics; + name = SnapKit; + path = SnapKit; sourceTree = ""; }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 01A2903FFDC71B013A0AA418CC0BFE82 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1218357DB97D5951081149FBA5B70228 /* GDTCORAssert.h in Headers */, - DD8B16678030B25FFADB079364A9340B /* GDTCORClock.h in Headers */, - 726EA34F616E306C63F83F2E9D68D3D6 /* GDTCORConsoleLogger.h in Headers */, - E4840003C4527BB550C8996D30603306 /* GDTCORDataFuture.h in Headers */, - BEAB0B41782A68006F272A779870C70C /* GDTCOREvent.h in Headers */, - 55197B8CE139FF6DBAAB5AA10ACB8BC3 /* GDTCOREvent_Private.h in Headers */, - 28A51E4B794819AB55AAFF10BBE37558 /* GDTCOREventDataObject.h in Headers */, - 065D865C974FD3006AFB4BE06B7F7CE3 /* GDTCOREventTransformer.h in Headers */, - 015B90278446AD5F509B36EF956455EB /* GDTCORLifecycle.h in Headers */, - D4C596FB62E8985E2092619789B8A699 /* GDTCORPlatform.h in Headers */, - 9ECAFB39395B72AEBA994CD019240C18 /* GDTCORPrioritizer.h in Headers */, - 87D8A7CEE5452C210004375BCCF3F412 /* GDTCORReachability.h in Headers */, - 4DCD0C54488122352500DFFA6BF8ACA5 /* GDTCORReachability_Private.h in Headers */, - 9DC62E041F6532C2FF2B47742EC4587F /* GDTCORRegistrar.h in Headers */, - B48CC9CDC58DA3A8086C287FEECDB969 /* GDTCORRegistrar_Private.h in Headers */, - A7AE360C0B9D23BBFBA0BF15E13579B8 /* GDTCORStorage.h in Headers */, - EE8C5D9FCC5156780573366335E41189 /* GDTCORStorage_Private.h in Headers */, - ECC7632221C89B6B5E65D15781D6B140 /* GDTCORStoredEvent.h in Headers */, - 16CE16CA4C764575C836DB921D2647F4 /* GDTCORTargets.h in Headers */, - 4C1FEF23B34B73DEB2035020FFC77F3F /* GDTCORTransformer.h in Headers */, - 43AD3D8791AE1BD745AB503707F19533 /* GDTCORTransformer_Private.h in Headers */, - B96012765CA1B56756ECDA897771BA6E /* GDTCORTransport.h in Headers */, - 9AFDF774E8D9172B3E2A41A6A0949C49 /* GDTCORTransport_Private.h in Headers */, - A0EEB7B3355A037F9D5DF5A96BF00A17 /* GDTCORUploadCoordinator.h in Headers */, - AB5EBC55969F4B63B885AED39330C646 /* GDTCORUploader.h in Headers */, - 78E879E2BB2FCDAE6FED4C997ECEF9B6 /* GDTCORUploadPackage.h in Headers */, - F4A4C231386BAEFD4858436A47F12C7A /* GDTCORUploadPackage_Private.h in Headers */, - B6A27D2E5B6299099FE6FC05B3F19D71 /* GoogleDataTransport-umbrella.h in Headers */, - D6463EB2572E8092FFBAF0FE66F5E318 /* GoogleDataTransport.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 01AB23B9CF81BB1196BA512F5DB923E1 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - EC30F30D3A7DD0DCF499AF8DE0AADF01 /* dwarf.h in Headers */, - 953DE369D1E8D0C89BAF73BE14026A78 /* FIRAEvent+Internal.h in Headers */, - 2578632AE8D48F79F007DDF055E34AC8 /* FIRAEvent.h in Headers */, - B6E14CED82289F74E5FF2053D436C2C7 /* FIRAValue.h in Headers */, - 8A5282A0D57D9C3222DEAC1CD10B9761 /* FIRCLSAllocate.h in Headers */, - 124B58D7736C2A7711AA1D349F8C5367 /* FIRCLSApplication.h in Headers */, - 88BF74B36440B0CC0556F11E6A32AF5A /* FIRCLSApplicationIdentifierModel.h in Headers */, - 51E7759218F0E32BBAB776F409AF18D7 /* FIRCLSAsyncOperation.h in Headers */, - 6A956D0D099F0C77C07C861326865873 /* FIRCLSAsyncOperation_Private.h in Headers */, - BA0FAB96B57938D9DEB74A53F6B4343F /* FIRCLSBinaryImage.h in Headers */, - 6F9B266DE2E6DB394F7B31D8364F8797 /* FIRCLSByteUtility.h in Headers */, - 6DD62D4DC46BF8AC8BFBADE2F0B36D17 /* FIRCLSCodeMapping.h in Headers */, - 7EAF821DEC2D9D38BAC58B8E92996880 /* FIRCLSCompactUnwind.h in Headers */, - D3B5C45C4F5DA024FA10CDE554C2739A /* FIRCLSCompactUnwind_Private.h in Headers */, - 6B0FEE5F3439CFE86E249010CC2464EF /* FIRCLSCompoundOperation.h in Headers */, - E40846F4A404F4B4413A423979120EBC /* FIRCLSConstants.h in Headers */, - 7E0D803C8560157276D0B43330EE67BD /* FIRCLSContext.h in Headers */, - 7E27B9911B7931DDDF567742DC97B482 /* FIRCLSCrashedMarkerFile.h in Headers */, - 2388AC038B8B1F0DFF2E663DC79A7500 /* FIRCLSDataCollectionArbiter.h in Headers */, - 69C76A41F2C9D69672A0E28644703A3B /* FIRCLSDataCollectionToken.h in Headers */, - D5A296E1089C25DEBAEB6CCA6F6A4C5D /* FIRCLSDataParsing.h in Headers */, - 242A1958A0D22185ACBE45768483B731 /* FIRCLSDefines.h in Headers */, - 5A52FBC586D31A183E473B9854B785E8 /* FIRCLSDemangleOperation.h in Headers */, - CB695ED2C426801DF4AE39D4CA036349 /* FIRCLSDownloadAndSaveSettingsOperation.h in Headers */, - AB85AA0C8266CDC97B66D3A936D8DEE5 /* FIRCLSdSYM.h in Headers */, - CCED35A7C673FD86DC9EAC30E6632299 /* FIRCLSDwarfExpressionMachine.h in Headers */, - 0A40EFAF6C005371FB0D9BFDFF47362C /* FIRCLSDwarfUnwind.h in Headers */, - C0B939D81E6243D73C3744FAAA388E52 /* FIRCLSDwarfUnwindRegisters.h in Headers */, - D4132B4931ADB482C8DBE46E73557B85 /* FIRCLSException.h in Headers */, - CF61B12A16BFC8E7A401BBBEB84B907D /* FIRCLSExecutionIdentifierModel.h in Headers */, - C7E58E836EF08FAF0354A175AF25D816 /* FIRCLSFABAsyncOperation.h in Headers */, - B1C86048B6C33EC25636E91C86E6B943 /* FIRCLSFABAsyncOperation_Private.h in Headers */, - 6C4530320BC54A9D8D79F5E01E417DD4 /* FIRCLSFABHost.h in Headers */, - 3295493808B9E3D87694EC8AE0ABC8CF /* FIRCLSFABNetworkClient.h in Headers */, - 5D2095717E83E0F4B8757C7B6DEDF2A5 /* FIRCLSFCRAnalytics.h in Headers */, - A01AA94583029FE4DBC19905828C5F70 /* FIRCLSFeatures.h in Headers */, - CB1AB8518B97B6C5ACB96880FECD1C76 /* FIRCLSFile.h in Headers */, - 7CCCFC563DD28BBC2E8F47483457670B /* FIRCLSFileManager.h in Headers */, - EAAF40A2A3E552B8FD0113E68DC1E776 /* FIRCLSGlobals.h in Headers */, - 88D878C4746418FDC0540BAABA44B440 /* FIRCLSHandler.h in Headers */, - B5494AAE0EC1160D9C8FBF3A18550673 /* FIRCLSHost.h in Headers */, - B100E5D1BBA116F2A908751AB80471B2 /* FIRCLSInstallIdentifierModel.h in Headers */, - A500F1B4ABDDED51F263B6CAAB221528 /* FIRCLSInternalLogging.h in Headers */, - 11FEC23B7C62A57E44738AFC57532370 /* FIRCLSInternalReport.h in Headers */, - 4D07637B5083A9377C9E004E5CBE60FA /* FIRCLSLogger.h in Headers */, - DA365A287DB7FA8AD60C63EC6829E14B /* FIRCLSMachException.h in Headers */, - 4061CB819164FA259F8DDC5A582BF0F8 /* FIRCLSMachO.h in Headers */, - 9E972E03FA2B4DB1D36DE77F595947F0 /* FIRCLSMachOBinary.h in Headers */, - 06A8684B4A3C3815CF6DFD9F944E2D0C /* FIRCLSMachOSlice.h in Headers */, - 86CA93F5347B3F5F6DEB6F559AB5DE58 /* FIRCLSMultipartMimeStreamEncoder.h in Headers */, - A4C2A749CEF80B49EC6C67CFF33627BE /* FIRCLSNetworkClient.h in Headers */, - 52F88C2925561A222243895A16C7FC1C /* FIRCLSNetworkOperation.h in Headers */, - 705EE32D04E017890B9E6FBB6EEF1239 /* FIRCLSNetworkResponseHandler.h in Headers */, - D50133BDD1C5B65BF0100649338407B4 /* FIRCLSOnboardingOperation.h in Headers */, - 7C583B135139B325459834220A6FC8D3 /* FIRCLSOperation.h in Headers */, - 6065F3817F6C04764017BC555CA9ABA4 /* FIRCLSPackageReportOperation.h in Headers */, - 2276256A1419294841047255D0AD8A65 /* FIRCLSProcess.h in Headers */, - DE7C0CA0366D7C4C5F2124DA780348A4 /* FIRCLSProcessReportOperation.h in Headers */, - 53BB68D6D3026E7D3F19CA197381696E /* FIRCLSProfiling.h in Headers */, - 786C95141F53AA70665D8BF433E8DD67 /* FIRCLSReport.h in Headers */, - 2A6828958668D47BD700FB843ABEC2A5 /* FIRCLSReport_Private.h in Headers */, - FA0FC467580718E1591CAB8D98C766AA /* FIRCLSReportManager.h in Headers */, - 1EDEA02B3A003892FE3AFE497BD4D81D /* FIRCLSReportManager_Private.h in Headers */, - DFAF991AD671C418603511C1EB4172C3 /* FIRCLSReportUploader.h in Headers */, - DC8C493773F954C6B091DDB4F5533305 /* FIRCLSReportUploader_Private.h in Headers */, - 55137B3BC2757A93EB623FDBBC491C89 /* FIRCLSSerializeSymbolicatedFramesOperation.h in Headers */, - 798D7750E262526BAA85FE7F072B23B8 /* FIRCLSSettings.h in Headers */, - 1FFCF3FB0C4E23CCA97143D7F73B67C3 /* FIRCLSSettingsOnboardingManager.h in Headers */, - D40F6913696F1170B7B4FA2473D29B16 /* FIRCLSSignal.h in Headers */, - 4001801CDAA397C9506F6FEB6FF0231F /* FIRCLSStackFrame.h in Headers */, - 63C70D2D687A5E57FDA3D5EF3288DD67 /* FIRCLSSymbolicationOperation.h in Headers */, - 868CA8AF233DE0FE36F9A031614EBE12 /* FIRCLSSymbolResolver.h in Headers */, - 3D93DDC55DF532FF02658E407A10659F /* FIRCLSThreadArrayOperation.h in Headers */, - 1F1A9B2A5020FB207B9E6C40FB229CB4 /* FIRCLSThreadState.h in Headers */, - 40CA1402ED5C949A4B559D701A6F1F41 /* FIRCLSUnwind.h in Headers */, - 4912CD85665F520F7749EE78B163B6B4 /* FIRCLSUnwind_arch.h in Headers */, - 9B806236ED88013833148BA523D50E16 /* FIRCLSUnwind_x86.h in Headers */, - 13B5AFD622ED1FD12BEC15AC9BC9DD26 /* FIRCLSURLBuilder.h in Headers */, - 1AD27BA1B6DCCCDB266BA0539554299A /* FIRCLSURLSession.h in Headers */, - 412D4ABE1DC40451864EB3699803829F /* FIRCLSURLSession_PrivateMethods.h in Headers */, - 124FEF0C867A7EF1E893DC40D6685D6A /* FIRCLSURLSessionAvailability.h in Headers */, - ACE1A0E290D3F83A22B349C103AC7E0C /* FIRCLSURLSessionConfiguration.h in Headers */, - 25F08D18D712160400F44CFAB07102CB /* FIRCLSURLSessionDataTask.h in Headers */, - 24DCEA59F2BF41A52DBABDCA35B9EFE8 /* FIRCLSURLSessionDataTask_PrivateMethods.h in Headers */, - AA36D6C02ED71C2464A10173BDD135C4 /* FIRCLSURLSessionDownloadTask.h in Headers */, - D607975BE346C1B9AAB620045DF93860 /* FIRCLSURLSessionDownloadTask_PrivateMethods.h in Headers */, - 66024371D236337E76052583A7DC5D61 /* FIRCLSURLSessionTask.h in Headers */, - 1EAC1E12CD734B9E254AEF82925D5416 /* FIRCLSURLSessionTask_PrivateMethods.h in Headers */, - C7E002BDEC06210D747F5794E7ED081C /* FIRCLSURLSessionUploadTask.h in Headers */, - B5642DECDA498B5E33625ACC1C0EAA04 /* FIRCLSUserDefaults.h in Headers */, - 5A7C5D1E7969AD38B89CCA0F97B95D25 /* FIRCLSUserDefaults_private.h in Headers */, - 5DCA05247C7A0E39B2A163615E79D5F3 /* FIRCLSUserLogging.h in Headers */, - BC1816E0A299460A7E9DE0CCF3768176 /* FIRCLSUtility.h in Headers */, - 9EB93C9AF9E26DDAF545C5806C9E5D5B /* FIRCLSUUID.h in Headers */, - 4FB891BBF32CC599E73213281A37CAFF /* FIRCrashlytics.h in Headers */, - 829BBCAC76971EA9459979D94EC66BFD /* FirebaseCrashlytics-umbrella.h in Headers */, - 002D4C8CFDCBCCA8B269809BDE97FFF6 /* FirebaseCrashlytics.h in Headers */, + F8E2F86C3A961F8E88124427976907CD /* UILoadControl */ = { + isa = PBXGroup; + children = ( + 0BC40E80DBB9A0521345A59482078CE8 /* UILoadControl.swift */, + 56EB5DC9E4F7072DE6880186FFEF33DA /* UILoadControl_UIScrollView.swift */, + 9EB88A15B26A131CBFF4264FFA3952A2 /* Support Files */, ); - runOnlyForDeploymentPostprocessing = 0; + name = UILoadControl; + path = UILoadControl; + sourceTree = ""; }; - 13A42C6953814A0B7201C04A824F0BA2 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - A8010B12D99DFF0F0AE34256244FF3B5 /* GoogleToolboxForMac-umbrella.h in Headers */, - B64C2ED4D82F085470BCADF7ED287805 /* GTMDebugSelectorValidation.h in Headers */, - BE6DA1C611EAF8FE4E8F917D651573DE /* GTMDebugThreadValidation.h in Headers */, - F0EA9E18BAEC37DFEB8FCF6051973F72 /* GTMDefines.h in Headers */, - EE94242639598C19978787228C076236 /* GTMLogger.h in Headers */, - EDC59ACDD37F2CA343690DB1E1514662 /* GTMMethodCheck.h in Headers */, - 854F502FAF0C311F965424BE68DC0D1D /* GTMNSData+zlib.h in Headers */, - D1FDA9FB7BCF8FC2C567E50657C4DC2B /* GTMNSDictionary+URLArguments.h in Headers */, - DD96B99C33E1906E06DAB0EFD95C08CB /* GTMNSString+URLArguments.h in Headers */, + FAF727F5D983A5FC1A3CF858DF2ED66C /* Resources */ = { + isa = PBXGroup; + children = ( + 6B6C6CE99D456B44806EBB2033AEDFC6 /* IQKeyboardManager.bundle */, ); - runOnlyForDeploymentPostprocessing = 0; + name = Resources; + sourceTree = ""; }; - 14B0E4A911C33A06140CC1BF137FB2CF /* Headers */ = { +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 15D0B27B695FB6C4CF05DB0D68AD553D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 48DFC6D391ED8091AFA7A8B01395D863 /* Pods-FoodScan-umbrella.h in Headers */, + A268B6C143564C4BC1DA969D489EEE3B /* crashlytics.nanopb.h in Headers */, + 7172C49E0B59C7EE03107E59EF8EA44F /* dwarf.h in Headers */, + F02185DF7437B8BA26E29B1532ED886C /* FIRAEvent+Internal.h in Headers */, + 8163A006E28E8CE8211F8BF451AF181A /* FIRAEvent.h in Headers */, + A4D4B036C3C141617802D35E4806FA10 /* FIRAnalyticsInterop.h in Headers */, + CF5F1B73F2FE57E9F058B0A3C3DA2F70 /* FIRAnalyticsInteropListener.h in Headers */, + 4C66A9419515F1335398F039D4DAFF44 /* FIRAppInternal.h in Headers */, + 695B69E72765B9BC713768C787A8AAE7 /* FIRAValue.h in Headers */, + 77F4ECB4F7C3B082F3B38012EA570EF3 /* FIRCLSAllocate.h in Headers */, + 7891ADB0238415F3D559C66E44AE672E /* FIRCLSApplication.h in Headers */, + DE5940F4C06D5854BDFAEBDAEFAEDE89 /* FIRCLSApplicationIdentifierModel.h in Headers */, + AB981C0FC46FB980C8EC8DF2E0B6D400 /* FIRCLSAsyncOperation.h in Headers */, + A8040F977D227855568C39BB006F8EF3 /* FIRCLSAsyncOperation_Private.h in Headers */, + AC366E37F3C5BB2C5BBE7E3CCAA5B735 /* FIRCLSBinaryImage.h in Headers */, + 8D19870890003DDE06BCC4337AF7A815 /* FIRCLSByteUtility.h in Headers */, + 164EFCCBC8248C2726EC42F132F73DC6 /* FIRCLSCodeMapping.h in Headers */, + D9773F73EF732EAC2B62FD9E4A8037DB /* FIRCLSCompactUnwind.h in Headers */, + 28DE317E7FB256C2625BAB78F0F52ADC /* FIRCLSCompactUnwind_Private.h in Headers */, + 07F2C39799AB2A7C79EEA1A72FC7E990 /* FIRCLSCompoundOperation.h in Headers */, + 54B2F6ACB9382E963AEB39BDEECE8E29 /* FIRCLSConstants.h in Headers */, + E64B4F6A35CFE04B9ED3BCC06D405810 /* FIRCLSContext.h in Headers */, + D53C638E52CE2D6AD9BCFA72D61AD3B5 /* FIRCLSCrashedMarkerFile.h in Headers */, + 92E7EBF062AFFFBAED44ACD987D2D9FE /* FIRCLSDataCollectionArbiter.h in Headers */, + 5CBC4F7E99BDFCD1443493361409AEF3 /* FIRCLSDataCollectionToken.h in Headers */, + B8A083909999C725CB5D504F6B11C3D1 /* FIRCLSDataParsing.h in Headers */, + 1C5794D7143F4AA76D2B6E0E7E50AF21 /* FIRCLSDefines.h in Headers */, + 2E1F42253DC15A352F99DEC9C0FF8B3C /* FIRCLSDemangleOperation.h in Headers */, + C2F3CE616D648FB75DD46731BA461175 /* FIRCLSDownloadAndSaveSettingsOperation.h in Headers */, + D6661718FDF4A615609FDF0473896005 /* FIRCLSdSYM.h in Headers */, + 27FF8E694BC1A1772568E5A458C50EF5 /* FIRCLSDwarfExpressionMachine.h in Headers */, + 5F81FD5BA2C66F7F7CF30E6727EBFC0E /* FIRCLSDwarfUnwind.h in Headers */, + F3554E1928D72C8C67CFE43BBBF06CC9 /* FIRCLSDwarfUnwindRegisters.h in Headers */, + 67DB177FDEEE00EB467B8EF9CA3B9805 /* FIRCLSException.h in Headers */, + D06C96B1AB0C779657B8F8BC96F9CE39 /* FIRCLSExecutionIdentifierModel.h in Headers */, + 87D83A631A44B2AC874C0A8E6CF0569F /* FIRCLSFABAsyncOperation.h in Headers */, + F91239769E0E73EE9A2A93729D89FC12 /* FIRCLSFABAsyncOperation_Private.h in Headers */, + 74A76DA5106787D7C27350606E8E9CDF /* FIRCLSFABHost.h in Headers */, + DBFFCB4D926A09DDB3AC34A0BCD8A0C6 /* FIRCLSFABNetworkClient.h in Headers */, + 2C8CC324B58065259B326D0BC5AAEEF8 /* FIRCLSFCRAnalytics.h in Headers */, + 3BDEE69A7FEFB9173FAD201357965F94 /* FIRCLSFeatures.h in Headers */, + 7C4E3BEACF095E15D01C0AB048944C32 /* FIRCLSFile.h in Headers */, + 2D13AB66FA9DE1D3C7AF4687671C0684 /* FIRCLSFileManager.h in Headers */, + 67AA525907D232C5B8AC58EA2AF87390 /* FIRCLSGlobals.h in Headers */, + 95B94C113B34B070BC67A81FE19BB447 /* FIRCLSHandler.h in Headers */, + 70AF57E21EFADB08318EF132DBCF2142 /* FIRCLSHost.h in Headers */, + 409DA22F20866C6C4FE7201147903602 /* FIRCLSInstallIdentifierModel.h in Headers */, + 4F1AD02E027BB1391F12C891C04CBF1E /* FIRCLSInternalLogging.h in Headers */, + ED269DBBE36E52692EBE180050A52FBD /* FIRCLSInternalReport.h in Headers */, + 47DACD12C62D66F8385202451D7A30FA /* FIRCLSLogger.h in Headers */, + D7BCB671B1A070AE438BE3578EA7E4C2 /* FIRCLSMachException.h in Headers */, + 67CDBA6DC882A6DFC90FEAFA21216A98 /* FIRCLSMachO.h in Headers */, + 27CACD40F2CAF99170DC8B3C04FEC05D /* FIRCLSMachOBinary.h in Headers */, + 7A82F332BE8C863CD01C6057EE115A1F /* FIRCLSMachOSlice.h in Headers */, + 96ABD3F0CACD83EFA49F28F1DC26F77C /* FIRCLSMultipartMimeStreamEncoder.h in Headers */, + 64DE0A43F2CFA42108FD3A7FFF76E248 /* FIRCLSNetworkClient.h in Headers */, + C073B2D91F8BCC7CAC676891784BC432 /* FIRCLSNetworkOperation.h in Headers */, + E33DF84261383E91EF6B02CAC8936168 /* FIRCLSNetworkResponseHandler.h in Headers */, + 68678E66DC429B51B586465786D8923B /* FIRCLSOnboardingOperation.h in Headers */, + B7D71076091D7EB3DEC868B0C1FFFA03 /* FIRCLSOperation.h in Headers */, + BC566A4F874A6283C184DBDBBF0C2A17 /* FIRCLSPackageReportOperation.h in Headers */, + ADA9E4C9BD8465AA5B51E91755BAFB40 /* FIRCLSProcess.h in Headers */, + AA7D13221EB14F368F2C955E390A1D58 /* FIRCLSProcessReportOperation.h in Headers */, + 267ECB4EE1FF237B850355F58E8F61BE /* FIRCLSProfiling.h in Headers */, + 2E674B738A772DA0E336F3103D5174C0 /* FIRCLSRecordApplication.h in Headers */, + 1F66915498E564EE223A12626EF742F5 /* FIRCLSRecordBase.h in Headers */, + C4865EDD1B27CD46FE01BCEBA56D509C /* FIRCLSRecordHost.h in Headers */, + 7DCD44B93FECC03B5A46B95176B44589 /* FIRCLSRecordIdentity.h in Headers */, + 65B03B1721A84A7C379481951A5F6C5F /* FIRCLSReport.h in Headers */, + 236BCF6FF6D5CEEF27D55DF23C578B49 /* FIRCLSReport_Private.h in Headers */, + E810970F71C0939628B8EEE090A3744B /* FIRCLSReportAdapter.h in Headers */, + 7AC838BA63BB6C5788C2ECC2893B1D38 /* FIRCLSReportAdapter_Private.h in Headers */, + 627EC3282CF56487E56DBC413747B637 /* FIRCLSReportManager.h in Headers */, + 8729BC234AF0903EDA0300C83273D29C /* FIRCLSReportManager_Private.h in Headers */, + 0DE7771E9870ACC600691283E1DF5726 /* FIRCLSReportUploader.h in Headers */, + B4EE72F79CAE8A2D37FC30B0EE2788AE /* FIRCLSReportUploader_Private.h in Headers */, + 699D91726C1F905C5D48668D39CA77C9 /* FIRCLSSerializeSymbolicatedFramesOperation.h in Headers */, + 748612B9474F4D3FD539E7E9C5112639 /* FIRCLSSettings.h in Headers */, + A9B68AE9FFF353DF35CCEB1ED99323D8 /* FIRCLSSettingsOnboardingManager.h in Headers */, + CB597DCCCFA899683F8BEA57666BC56F /* FIRCLSSignal.h in Headers */, + AF8131C8943A1B0AF0F2F63CF7B48B66 /* FIRCLSSymbolicationOperation.h in Headers */, + 7976D007778370CDDC4C81F8F08C2C7A /* FIRCLSSymbolResolver.h in Headers */, + 24462135B91211810CEA8D51CD00B255 /* FIRCLSThreadArrayOperation.h in Headers */, + 14196090AE728591AB110BAB0FB6EFE5 /* FIRCLSThreadState.h in Headers */, + 29DF5BD3A192706AFA91258F47A9390C /* FIRCLSUnwind.h in Headers */, + FC4C0C92CC27BDD34EBFF542484ED950 /* FIRCLSUnwind_arch.h in Headers */, + 60117502124E198596AB760CBB7AE136 /* FIRCLSUnwind_x86.h in Headers */, + 949748DB22531973D1840468C67985B1 /* FIRCLSURLBuilder.h in Headers */, + E7B9EC091E7F2C6F8A5B349A245BBBA6 /* FIRCLSURLSession.h in Headers */, + 350A4485696B39AF1DD1BB115B558CA8 /* FIRCLSURLSession_PrivateMethods.h in Headers */, + 9C17F1D394A766108645FD5562E8A2B9 /* FIRCLSURLSessionAvailability.h in Headers */, + 0F3313B90CD038482B00116295580845 /* FIRCLSURLSessionConfiguration.h in Headers */, + 9DE103C8DF0FCDD6B69AD0E4F465AE50 /* FIRCLSURLSessionDataTask.h in Headers */, + 780BBBDE8914D3EBBF0CF989B40A8FB9 /* FIRCLSURLSessionDataTask_PrivateMethods.h in Headers */, + CF87DD64624E68A24125699768E29E99 /* FIRCLSURLSessionDownloadTask.h in Headers */, + 90E7980DCFE7E98D08F482AEDEAE0E60 /* FIRCLSURLSessionDownloadTask_PrivateMethods.h in Headers */, + 4B56CE19DFC1E0148C8D3F932751A849 /* FIRCLSURLSessionTask.h in Headers */, + C17067C2BA1EBE6998D4240B4643C087 /* FIRCLSURLSessionTask_PrivateMethods.h in Headers */, + 6CF0349B0F99FEE53FAF68F4A07926A7 /* FIRCLSURLSessionUploadTask.h in Headers */, + F9E141608BFAA1B33DAA32C79188D1AA /* FIRCLSUserDefaults.h in Headers */, + 18DCB28E5CDCB75CE287949880AA6910 /* FIRCLSUserDefaults_private.h in Headers */, + CB38C081493E8BA3A64782AF2AA55AF1 /* FIRCLSUserLogging.h in Headers */, + 63FCE932F1D388A0091486BD2057995D /* FIRCLSUtility.h in Headers */, + AE1655BDAE27A36F9F32B18E77EAA8C5 /* FIRCLSUUID.h in Headers */, + AEF39B2D1FEBDA6CAE66280672BC1722 /* FIRComponent.h in Headers */, + 7885788896BAA18BA291B2574B6C7B8D /* FIRComponentContainer.h in Headers */, + AB0D4564CF19EA65A4CC94394639E4E0 /* FIRComponentType.h in Headers */, + 82BBE2E11E77F50D3FB1CE676198D375 /* FIRCoreDiagnosticsConnector.h in Headers */, + E9B1BD03AEC10F7FD8B963FD6B2737EC /* FIRCrashlytics.h in Headers */, + CAB72B40AD98BFD06D2B8D16CD30DF14 /* FIRDependency.h in Headers */, + 48E510C5E35E2D12CEB066A5465085EC /* FirebaseCoreInternal.h in Headers */, + 8A7DC3C572BA8FA33B83ABA33B77C674 /* FirebaseCrashlytics-umbrella.h in Headers */, + A40F788E2995B6A83BAA7E55CE7EB30F /* FirebaseCrashlytics.h in Headers */, + 204FE6DA5B38A26B953D0A986D22BB06 /* FIRErrorCode.h in Headers */, + DEF89BC13D8F464FBA6952D6ED68CA7D /* FIRErrors.h in Headers */, + 08716514767800D87FDD8A6AACF45B52 /* FIRExceptionModel.h in Headers */, + 5EB77D9C9687BF67CE7B4B5B8A2BCBA8 /* FIRExceptionModel_Private.h in Headers */, + 62FD8F655D8732B6031FB049E260BA1A /* FIRHeartbeatInfo.h in Headers */, + 698BB58C43B736B20EBA66D4BED7E1C2 /* FIRInteropEventNames.h in Headers */, + 434A994A1A9C77DADC11D4A3DCA4BB91 /* FIRInteropParameterNames.h in Headers */, + 8F1377E55120A526BCBBF4CC7892B50F /* FIRLibrary.h in Headers */, + 41784AA582810BFF657E52253D23FCE8 /* FIRLogger.h in Headers */, + 7D5EA4BBE3FD96F57C48582ACA9A4977 /* FIROptionsInternal.h in Headers */, + 275885418CAA9F1AC36DC72FCFBDB9C6 /* FIRStackFrame.h in Headers */, + 4284F3E05A572D3CD533F52E24DF7F65 /* FIRStackFrame_Private.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4501,33 +4905,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2B486E6455EE5D92949C34F1D54654AE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 172376EEEFEEC333543559F3C3F4901F /* GoogleAPIClientForREST-umbrella.h in Headers */, - 120A2206B9C24FA1473B7853D62E38F0 /* GTLRBase64.h in Headers */, - A3D3D3F5BA5FAD00B7F980A6F70D115D /* GTLRBatchQuery.h in Headers */, - F831451088B7BEF105A9A4EEC0EF88C0 /* GTLRBatchResult.h in Headers */, - 5F99DDB020C6D45944002B4287DDABE9 /* GTLRDateTime.h in Headers */, - 36ECF190DB11F187D30AC4A02F165DAB /* GTLRDefines.h in Headers */, - 4F8300A9B7AF79D7D395D76E1F92049B /* GTLRDuration.h in Headers */, - 8B7A1DB31E375BB55949651F2E982796 /* GTLRErrorObject.h in Headers */, - B8439071A516317A7A770551E954D831 /* GTLRFramework.h in Headers */, - 8D4E46E68FF7417C8A4BDB4D36563231 /* GTLRObject.h in Headers */, - 8912180A74939BF82E5ED7D37A162F6F /* GTLRQuery.h in Headers */, - E0A709544F2DF0C3165E707695A49AFA /* GTLRRuntimeCommon.h in Headers */, - 81780BE3766447374A57872A287B8B96 /* GTLRService.h in Headers */, - D941C23F4EE3E5FC6D81D78D3CA3BFA5 /* GTLRUploadParameters.h in Headers */, - EBB1F39B33C5F5440C4D3BCD79A04222 /* GTLRURITemplate.h in Headers */, - 1CFEC9957725C5B3215DB456B4625BB5 /* GTLRUtilities.h in Headers */, - 0CA5E0992D6B7F456658AF35F4FF883B /* GTLRVision.h in Headers */, - DC4E704D774E16E193E8A150622B919C /* GTLRVisionObjects.h in Headers */, - 8A4E5775987E0FAE89ED481766FC2C09 /* GTLRVisionQuery.h in Headers */, - 6A6F010D18E84636AB1CB29166B0B6B7 /* GTLRVisionService.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 2BBB19E48E5C6E19074178D75BDB5617 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -4563,32 +4940,83 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2DD8D6F299A77310B7C22612D5EF3176 /* Headers */ = { + 3076D331E9F18C1C52553382CDD01DA8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BD503BE4798FC30D23AC747146D39FE2 /* MarqueeLabel-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3284C20472AFF6A63A7094CE20A5E3D5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - AE2A5C330BB358D348FBF662D29BE710 /* cct.nanopb.h in Headers */, - A1829F0DDA4206A9E833B3C862CB5A1A /* GDTCCTCompressionHelper.h in Headers */, - 63DFA75489F35EF827B4C605E41774FC /* GDTCCTNanopbHelpers.h in Headers */, - 6667618D56182D37B73DCB409D666BEB /* GDTCCTPrioritizer.h in Headers */, - 51B7514B8052CA7800B8E9F47F081109 /* GDTCCTUploader.h in Headers */, - F8A3BA83A86AE6B4516EAD5302232317 /* GoogleDataTransportCCTSupport-umbrella.h in Headers */, + 3EC52C8A6BABE4066E466519E31C3E03 /* IQKeyboardManagerSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3076D331E9F18C1C52553382CDD01DA8 /* Headers */ = { + 36DD58BC2F83D1F8A1DCDF6633429F53 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - BD503BE4798FC30D23AC747146D39FE2 /* MarqueeLabel-umbrella.h in Headers */, + 73DE9F90C60832ED45002376D5178DFA /* SnapKit-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3284C20472AFF6A63A7094CE20A5E3D5 /* Headers */ = { + 38E3B75AB4DF672ADFC9BCB83AB7027B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 3EC52C8A6BABE4066E466519E31C3E03 /* IQKeyboardManagerSwift-umbrella.h in Headers */, + AC6F0470ED92512330C23C92EA64ED3D /* Any.pbobjc.h in Headers */, + BB1877BC8B97275A201E2D8E937BE623 /* Api.pbobjc.h in Headers */, + 41FDA0DC71D02D2EE744D9ADC9413138 /* Duration.pbobjc.h in Headers */, + F5EB4F96581FBFE6C7CAB486D3B28414 /* Empty.pbobjc.h in Headers */, + 5A0E68DEDE122C476AFD5208629C0894 /* FieldMask.pbobjc.h in Headers */, + 8B845C12A7138DBCA9EFE6FEF15CE10C /* GPBAny.pbobjc.h in Headers */, + 44C0D8267A09E4D12325986080496F66 /* GPBApi.pbobjc.h in Headers */, + 3F491934B6316866A5CE921DDB87C6C5 /* GPBArray.h in Headers */, + A4EA38AC060DC6DF8B1F17C91515D7ED /* GPBArray_PackagePrivate.h in Headers */, + 1981FC08F716C430BDDCE6DDCD93674E /* GPBBootstrap.h in Headers */, + C42647885C597B106460BB8F1DF0AC61 /* GPBCodedInputStream.h in Headers */, + 56FD6D612C8B6B8FF79C0AE8B8772366 /* GPBCodedInputStream_PackagePrivate.h in Headers */, + 2EBC787AA6EC9FFF8F0550EDB8823846 /* GPBCodedOutputStream.h in Headers */, + 88ADC8C8F456FC984A24D1FD4E1F446E /* GPBCodedOutputStream_PackagePrivate.h in Headers */, + 40567B104BF4691902F2EF677D699112 /* GPBDescriptor.h in Headers */, + 742F484E4D02E0ABF18CDDAC5EEA6A69 /* GPBDescriptor_PackagePrivate.h in Headers */, + 3D51B70ED55B22FEFFD7E25C1E1368F0 /* GPBDictionary.h in Headers */, + A7DE4FDCE919FA50F413D4523616F1D9 /* GPBDictionary_PackagePrivate.h in Headers */, + 5FE9814EEEC06D2A57DCAC2F0BF3C236 /* GPBDuration.pbobjc.h in Headers */, + 8CB0A66EC6C15D0B752BE9074CF91C34 /* GPBEmpty.pbobjc.h in Headers */, + 5AC14B4F779334AC7F2530BACBC87B26 /* GPBExtensionInternals.h in Headers */, + A81C819F68EE28575D0D742C0FE3CB1A /* GPBExtensionRegistry.h in Headers */, + D23A0F6024BC97FCDC2315CA689CF952 /* GPBFieldMask.pbobjc.h in Headers */, + D4B52AC0D4A5D20C6017980857CED437 /* GPBMessage.h in Headers */, + D9414C78911D206E3618C0C733D2F3E8 /* GPBMessage_PackagePrivate.h in Headers */, + 0CE558513994F7C18AAD73AC559E4F8F /* GPBProtocolBuffers.h in Headers */, + 09AB9EE2C25E485CEF7330EA9589E748 /* GPBProtocolBuffers_RuntimeSupport.h in Headers */, + 61B48C105AC22B7C3F268A924B999624 /* GPBRootObject.h in Headers */, + 00E517DFB19E7C0A73C5D3B322310A5C /* GPBRootObject_PackagePrivate.h in Headers */, + A2A8019845628D37C33AA55311646EE5 /* GPBRuntimeTypes.h in Headers */, + 80DF20094FDF834C023993FD7E7B7CE6 /* GPBSourceContext.pbobjc.h in Headers */, + FECC6A79B57F2A301FFBFCF896A5CC68 /* GPBStruct.pbobjc.h in Headers */, + AA8DD5C562015338CF11AC208EBFB9C4 /* GPBTimestamp.pbobjc.h in Headers */, + E97F65463D338D74FD466DBD80905B30 /* GPBType.pbobjc.h in Headers */, + A716BC37C088D963D43C857BDB36AB9C /* GPBUnknownField.h in Headers */, + 69E17823618D73503A9107DF4E91C39F /* GPBUnknownField_PackagePrivate.h in Headers */, + 1FFC152F2C26C3DB23ABF93F8E213DC2 /* GPBUnknownFieldSet.h in Headers */, + 1AE15D46A77B22FB409FDB1A8AD9F086 /* GPBUnknownFieldSet_PackagePrivate.h in Headers */, + A3DE5187A95886D2917E39169B1F2FE8 /* GPBUtilities.h in Headers */, + 54FEFB469F111C1661324300B4D51B4B /* GPBUtilities_PackagePrivate.h in Headers */, + 6080E6D330C02D4C415E9A486A4697E5 /* GPBWellKnownTypes.h in Headers */, + 13D6EE1467D1C6A72952F63E8C12BED2 /* GPBWireFormat.h in Headers */, + 2250CC9397C0145D07A5B7B267D2782B /* GPBWrappers.pbobjc.h in Headers */, + 043BF94AB27B8329BB97C03FC2C083F6 /* Protobuf-umbrella.h in Headers */, + 0298A6F18E29528F5AF305534BECDA5C /* SourceContext.pbobjc.h in Headers */, + 28D1B3462379B6B830A6CED4029598A8 /* Struct.pbobjc.h in Headers */, + 8A15AD63028E403CAD58B957E015987D /* Timestamp.pbobjc.h in Headers */, + 9D426CCB4102050C45C9FF5367F57666 /* Type.pbobjc.h in Headers */, + A644CA57CF8796AD0C18126F47606B13 /* Wrappers.pbobjc.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4616,6 +5044,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 485C1D1230020ECB5B0A15D69BBBC107 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + DDED53618535D48873FE096199CFD3CE /* GTMGatherInputStream.h in Headers */, + DCE18305E654670E89386191CD7671B5 /* GTMMIMEDocument.h in Headers */, + 3BDB17A9280F7E7376EA5FC82D2D9600 /* GTMReadMonitorInputStream.h in Headers */, + E04A55D7AB7FC15F147A8120BD18E041 /* GTMSessionFetcher-umbrella.h in Headers */, + 6A0864EAB5DB76AC88D1EA40A2E9FB83 /* GTMSessionFetcher.h in Headers */, + CBC0DC5742EC8A72243FF9E7241E9237 /* GTMSessionFetcherLogging.h in Headers */, + D33BE2CAD030C5B1386A968F3462FFB9 /* GTMSessionFetcherService.h in Headers */, + AAEC4E8E861510E4F35A93F904E280ED /* GTMSessionUploadFetcher.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 4909E00D625A8932388E0BC83A5EC167 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -4624,143 +5067,180 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 51C5136FAFB41E512976A3FD90B753F9 /* Headers */ = { + 4AA77B76C07734738F6F91B95B01463C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A871401A1422B0011853E2B34A8771A1 /* GoogleToolboxForMac-umbrella.h in Headers */, + 48118F2BBBBED5CDB99490669657EA32 /* GTMDebugSelectorValidation.h in Headers */, + 300D3D8B912DB279CA3CF73EAD50DEE4 /* GTMDebugThreadValidation.h in Headers */, + 2DA533FF3FB8BF229952BC4F2D65CDAB /* GTMDefines.h in Headers */, + E02181E7A3BED6B98B338113A0BBADB9 /* GTMLogger.h in Headers */, + AF2FDDC3B21B686612AC1DC1AA6BE5CE /* GTMMethodCheck.h in Headers */, + 7CEF1FBE49F2B819C71DDE07A08AC97A /* GTMNSData+zlib.h in Headers */, + A168F259B9F6A82D020E48A79C6E9D5B /* GTMNSDictionary+URLArguments.h in Headers */, + 7C51447686F11E155BD6FA9098481AA9 /* GTMNSString+URLArguments.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5213D266DBA9F3A1A5A2AAF4E88DD6A5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C6BB169504122E40FBC4EBB31C6A5D91 /* FirebaseInstallations-umbrella.h in Headers */, - 2D056F7775CD41AC62C31F4AF660797F /* FirebaseInstallations.h in Headers */, - 62BD10EF657093EEE5877D8A1A2D6FE2 /* FIRInstallations.h in Headers */, - 7CA390F43740FCBA925CF1B4C961E322 /* FIRInstallationsAPIService.h in Headers */, - C7B1C00AC89BDDC408CA48F1F4DB35C8 /* FIRInstallationsAuthTokenResult.h in Headers */, - E49EE9A5DA279A38B5499E732787ABEC /* FIRInstallationsAuthTokenResultInternal.h in Headers */, - 458C446008CA668126D28194DB6F360D /* FIRInstallationsErrors.h in Headers */, - 26C5C5EC8C3E282F33B44969506562CD /* FIRInstallationsErrorUtil.h in Headers */, - C4FAA5328A9E500CE29095B03CA5B917 /* FIRInstallationsHTTPError.h in Headers */, - 17C506048003C942B3871EE955439444 /* FIRInstallationsIDController.h in Headers */, - 02A40C4326531FECA7B7F0212F8C7898 /* FIRInstallationsIIDStore.h in Headers */, - F00C9A9FC5774E46AACCE34056562C81 /* FIRInstallationsIIDTokenStore.h in Headers */, - 1C7B8C73B4328DFECA689FDB24CAF630 /* FIRInstallationsItem+RegisterInstallationAPI.h in Headers */, - 02EEB2CAC216D2672239D684BD767D0A /* FIRInstallationsItem.h in Headers */, - E23F2A655FE3C9095A1AC7B22F3479D1 /* FIRInstallationsKeychainUtils.h in Headers */, - 8606E57F7AE6681F4575ACBED843E65F /* FIRInstallationsLogger.h in Headers */, - 322B4E09F0E5A37C5241B4CD8A4207E6 /* FIRInstallationsSingleOperationPromiseCache.h in Headers */, - 172429B182DB4640882E7368262B7D99 /* FIRInstallationsStatus.h in Headers */, - 68850EAA513E9381034388A5F24E42B7 /* FIRInstallationsStore.h in Headers */, - F50909F0F758D203AC88166D7EB44C88 /* FIRInstallationsStoredAuthToken.h in Headers */, - 0D5A78884C78DFB2257AD92AEFC5AF25 /* FIRInstallationsStoredItem.h in Headers */, - EFE464AD44534C1332ECE199FC2684C3 /* FIRInstallationsVersion.h in Headers */, - E6BEB96B2E1374A337F0D5AABA28E679 /* FIRSecureStorage.h in Headers */, + 998EAA3DD9B32FA57D1F354E7DF86718 /* cct.nanopb.h in Headers */, + 52EEF7A24E458093E38CD21F63DB5398 /* GDTCCTCompressionHelper.h in Headers */, + 708998A6071608420C1560645CFD9EE5 /* GDTCCTNanopbHelpers.h in Headers */, + 19329F2BA82F42CF0923F65D350195C0 /* GDTCCTPrioritizer.h in Headers */, + E7C4633C5E299E99CE399F288633F84F /* GDTCCTUploader.h in Headers */, + 4D56D0D8F847EA3E92F5A22266E0D2F1 /* GDTCOREvent+GDTCCTSupport.h in Headers */, + 088AA5BC39EF49FA5E4BCC221C3457F8 /* GoogleDataTransportCCTSupport-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 83347182134B16FB63455D3D73DBC418 /* Headers */ = { + 6E22A3973F9433967D3DE6D3505E709C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E8B717D9EDDFFA914F19367B9977C40F /* FIRAnalyticsConfiguration.h in Headers */, - 1BE4104330E25C9C551E617AC92F1CF6 /* FIRApp.h in Headers */, - 165E6A708428B9D2C100A415553BEBE1 /* FIRAppAssociationRegistration.h in Headers */, - 70BA1E072B04793C6FBBC87664613A1D /* FIRAppInternal.h in Headers */, - F28312BF66FB1506D3E9F5C059BAD8C6 /* FIRBundleUtil.h in Headers */, - 85955F3F75820143617C46D87BF3B172 /* FIRComponent.h in Headers */, - 56583D54084D80DE92C7517374FFBF2E /* FIRComponentContainer.h in Headers */, - B7E068346FC405C8C7B35005A8DCE740 /* FIRComponentContainerInternal.h in Headers */, - D9B862C1A8D630E2AC20BA41DC458905 /* FIRComponentType.h in Headers */, - BA78F81D82ECCC2560AAE7CF2AF86754 /* FIRConfiguration.h in Headers */, - D1A34DB5EBDAB56C6EB603AE69E249A4 /* FIRConfigurationInternal.h in Headers */, - 31194FCDC64BCC8BAC0BA1C7F777790C /* FIRCoreDiagnosticsConnector.h in Headers */, - C5FF2AB8E0AE0A3C708DAF194A811512 /* FIRDependency.h in Headers */, - F1AA1EC79185E3A7B273C35D0BD52010 /* FIRDiagnosticsData.h in Headers */, - DEECBCB4DBD29F0E5283860538F94D8F /* FirebaseCore-umbrella.h in Headers */, - 3432BB0E9244B9F6761D3DBA5B1E2CBB /* FirebaseCore.h in Headers */, - E337A3B2B095D18890412F2F8EC586D1 /* FIRErrorCode.h in Headers */, - 3CB70A192E37184B49F215AC81839D0A /* FIRErrors.h in Headers */, - EB6C78248A970D1A389A9F2147472EA4 /* FIRHeartbeatInfo.h in Headers */, - 0EBBC66437EC2B685657EE9877BFABA8 /* FIRLibrary.h in Headers */, - EB349A8F62F17D64442E21C7E9D43445 /* FIRLogger.h in Headers */, - 74CA306CE2A130695D0D21490E366014 /* FIRLoggerLevel.h in Headers */, - 7FEA76BF6477685ADC152BD843E3A0C8 /* FIROptions.h in Headers */, - 603D19DAC136871466C1D1DD666CF30A /* FIROptionsInternal.h in Headers */, - 20A39462BB5FFC35D47CA150A007031B /* FIRVersion.h in Headers */, + 6D1352D96272D17C4E8BE65CA129463E /* FIRAppInternal.h in Headers */, + 0510E4BA33BE188F1679AEA66059461C /* FIRComponent.h in Headers */, + E83E28C362D239A1FCB698EBF2C9D702 /* FIRComponentContainer.h in Headers */, + 9C4903EE07D309DD1C1B37828DE528FC /* FIRComponentType.h in Headers */, + 133D3A80835076E42048E7FD1F2F3EE1 /* FIRCoreDiagnosticsConnector.h in Headers */, + 5DFB77FDC8DA519B9022FDCF31C05DE8 /* FIRDependency.h in Headers */, + DC0E3CDF287327134843885029819FDA /* FirebaseCoreInternal.h in Headers */, + ABCE8B463DDCC5131505852CB6335DF3 /* FirebaseInstanceID-umbrella.h in Headers */, + 54A6251D613CD67B72706473381C0531 /* FirebaseInstanceID.h in Headers */, + A88B6C394E6D2D5E6136513631D73082 /* FIRErrorCode.h in Headers */, + 790E7094EECCFCE26F2C287352A01ACF /* FIRErrors.h in Headers */, + 74D738F355A93EE7BF760EBBFC075663 /* FIRHeartbeatInfo.h in Headers */, + 304B78A95EEEF66A1C73129D8ED599AA /* FIRIMessageCode.h in Headers */, + 2B0B79CB4714D27DC38C10C69EACE107 /* FIRInstanceID+Private.h in Headers */, + DB3CA49C59E07EC30FB5F8FB475F7C60 /* FIRInstanceID.h in Headers */, + B683D86F4271BC4CC2E75F6D9AD38FE4 /* FIRInstanceID_Private.h in Headers */, + 89001D3F23BDE18A854D6BCCDF764A53 /* FIRInstanceIDAPNSInfo.h in Headers */, + 88DA2021BCE032AEB7DACB464BC95CD9 /* FIRInstanceIDAuthKeyChain.h in Headers */, + 78FB4463B7E8F968E42FC8A388A8FAC2 /* FIRInstanceIDAuthService.h in Headers */, + 7780B77C0860C069ED47FA2A7FF0CF71 /* FIRInstanceIDBackupExcludedPlist.h in Headers */, + FCB4BCFC2D69E56A05C104D5B2F3D167 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */, + EAE6AC30E2108844BBE823745FCBAD79 /* FIRInstanceIDCheckinPreferences.h in Headers */, + 1ACB5E23015E6B3F12C4816642C10660 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */, + 1D98BD5A9BA83860C86BFE6B4FD556D1 /* FIRInstanceIDCheckinService.h in Headers */, + 3AA8CB461AA7A5B74FFD3E4FC8F9B644 /* FIRInstanceIDCheckinStore.h in Headers */, + 72270EF2EC5EC5140C485EF2B77C7C02 /* FIRInstanceIDCombinedHandler.h in Headers */, + EA77FB6F38B31933A047D98C0A85ECD8 /* FIRInstanceIDConstants.h in Headers */, + 54FA0F4229DC944D98EC44C26070BA53 /* FIRInstanceIDDefines.h in Headers */, + F4F4CDD8C0858539CC9F1CED876583AC /* FIRInstanceIDKeychain.h in Headers */, + FB23FD71AE307464AE6148976CC65FD7 /* FIRInstanceIDLogger.h in Headers */, + EE996F0F3900A53B8C58EA00A920C35D /* FIRInstanceIDStore.h in Headers */, + 61CD9819F204E980E7C7D387565CC8FA /* FIRInstanceIDTokenDeleteOperation.h in Headers */, + 15829F7A1706C55CB93B72787C08D054 /* FIRInstanceIDTokenFetchOperation.h in Headers */, + 24549C7B22EEEB9FE6874E6C83E6548B /* FIRInstanceIDTokenInfo.h in Headers */, + C998130A2365DF563B4AFCD2A6D45C3C /* FIRInstanceIDTokenManager.h in Headers */, + 69B69EDDAC99740EA6F74AA547ADA94E /* FIRInstanceIDTokenOperation+Private.h in Headers */, + FC60FB031257D2E56A8D5D1C6C38E8F9 /* FIRInstanceIDTokenOperation.h in Headers */, + C3B2D3FA1EE67279AE65F6B69BE1CA4D /* FIRInstanceIDTokenStore.h in Headers */, + 9361C9E4EDC43E6560D96F53E24CBA32 /* FIRInstanceIDURLQueryItem.h in Headers */, + ACB12D4FA59A0A0516BB24E6EEF8AC69 /* FIRInstanceIDUtilities.h in Headers */, + FFF5164E6332E647BDFADB73EAF16FD7 /* FIRInstanceIDVersionUtilities.h in Headers */, + CB0E799342C2F1F61BCA5121CF5E482A /* FIRLibrary.h in Headers */, + B316449E26820A2F230FCFF3549B6B8F /* FIRLogger.h in Headers */, + D8D15165EAE737100136AF017BC9E58A /* FIROptionsInternal.h in Headers */, + 12DD4308260D79B5077A87C6A867264F /* NSError+FIRInstanceID.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 87E23D25E5A727E7F0D0846A58841BB6 /* Headers */ = { + 743283627D328A86DD5478325C637B1A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B98E1F3923B10FF7B4A02E29E4A637E0 /* GTMGatherInputStream.h in Headers */, - 872F6DEBD1FF4F61CC5FA2D5C191BF49 /* GTMMIMEDocument.h in Headers */, - AC9F411947676EC070FC7301600B7D15 /* GTMReadMonitorInputStream.h in Headers */, - F9FDFEBD9083B9A3911330CAD03E577A /* GTMSessionFetcher-umbrella.h in Headers */, - ECB9161F8D23D9830FC4C863E2B9AC3C /* GTMSessionFetcher.h in Headers */, - C660A1B6B4EFDE2D4D2FA7DE1D42DBF3 /* GTMSessionFetcherLogging.h in Headers */, - 77056A25990BB2C0224F5B731DBE9C21 /* GTMSessionFetcherService.h in Headers */, - 04E91B1EC2F49966C4784B7023064D06 /* GTMSessionUploadFetcher.h in Headers */, + 5072592A5517CB21463532EFF2732E4D /* FIRCoreDiagnosticsData.h in Headers */, + 01AD59420F129D6A8F14FEE87CC304A7 /* FIRCoreDiagnosticsInterop.h in Headers */, + 8D5D533D895F08B5A65B05525DC7DE69 /* firebasecore.nanopb.h in Headers */, + 1FADE665F64045E1D91389EB86CD0765 /* FirebaseCoreDiagnostics-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8A9FBE720046465650C95C80C46C1B41 /* Headers */ = { + 7AD81A91290CDE684B57CAFD63F9931D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 03E955C8AAC26E31A8B29A2C1DC5B3BE /* SnapKit-umbrella.h in Headers */, + AA55C43B1B7DFCC38321F386837D054C /* FIRAppInternal.h in Headers */, + D1891DA40FC97A2ABEA1CA6E3F3A01E0 /* FIRComponent.h in Headers */, + 5E5210DF5BAF4C9BAAEDA76F33448E26 /* FIRComponentContainer.h in Headers */, + 298EC52E13D924BF14F9EF9C3A2A19F9 /* FIRComponentType.h in Headers */, + F1F32C9274D5300E83E5AEF49A9DA478 /* FIRCoreDiagnosticsConnector.h in Headers */, + A1732B77F603CE8FD72D7021BF425CDA /* FIRDependency.h in Headers */, + E3E6FBF6953ED0059EBB65063F3F225C /* FirebaseCoreInternal.h in Headers */, + 6727807781F0C96179F8753058FE7EA2 /* FirebaseInstallations-umbrella.h in Headers */, + 1825C389D1AD15B06C538418516A2F22 /* FirebaseInstallations.h in Headers */, + 71D8072CD29CF48938990BCF89B5C0A5 /* FIRErrorCode.h in Headers */, + 89C8DDAD106B9362208FD595A3643372 /* FIRErrors.h in Headers */, + 89587C7A9045CE1539B402ADF8B0D82E /* FIRHeartbeatInfo.h in Headers */, + 22B873D35CB57E594EBBEFB27628FD9C /* FIRInstallations.h in Headers */, + E1DCE25A101B1F253128402D0B2078C8 /* FIRInstallationsAPIService.h in Headers */, + B18BB5C3F49BA7F111B1B387D1155768 /* FIRInstallationsAuthTokenResult.h in Headers */, + 4B4344D96645C0F9994DDF9487CB9D78 /* FIRInstallationsAuthTokenResultInternal.h in Headers */, + 9BCBD44CC87277157BD819D84D62B97A /* FIRInstallationsErrors.h in Headers */, + 683069FC2207902F156FCB78A5BF4FC7 /* FIRInstallationsErrorUtil.h in Headers */, + 48AB7B416F04346D541C668DE838386A /* FIRInstallationsHTTPError.h in Headers */, + F8AC05F0C35F32F97A45E46F3FF55B8E /* FIRInstallationsIDController.h in Headers */, + 771332A5A23B8A52667DA9EEF8CD3A2D /* FIRInstallationsIIDStore.h in Headers */, + F493EBC4CFC0B13FB3C80D3A320DF620 /* FIRInstallationsIIDTokenStore.h in Headers */, + BEF16EA34FD515AD9A5794FDDC6B9276 /* FIRInstallationsItem+RegisterInstallationAPI.h in Headers */, + B87CE6FFB11981A69597EF3F74E65573 /* FIRInstallationsItem.h in Headers */, + 6C290F9D79316F1161493C90F70CC584 /* FIRInstallationsLogger.h in Headers */, + 0B8E8A98466E25C4043C3AD8419B4057 /* FIRInstallationsSingleOperationPromiseCache.h in Headers */, + E06606745C36EFBCDF63AE837705F7E9 /* FIRInstallationsStatus.h in Headers */, + 4EA0B355E189B62A681F1BA1289CAFDF /* FIRInstallationsStore.h in Headers */, + A748948172E121292D77B6747A8A62A4 /* FIRInstallationsStoredAuthToken.h in Headers */, + F3E516EDEFA50BC57450C1893AB7B13E /* FIRInstallationsStoredItem.h in Headers */, + A1D8723888732EA2F4BE8F3E77D8A5B8 /* FIRInstallationsVersion.h in Headers */, + 8A63B135D38EBFEE29036A40F849A1E7 /* FIRLibrary.h in Headers */, + 4AF827A1D0F1B1839B2D8B052FA1109C /* FIRLogger.h in Headers */, + A1277CC1A352417EAE0297A7B7009CDF /* FIROptionsInternal.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9F288337DFF43B4151C636C6D5C28667 /* Headers */ = { + A443E9FB917C7A6658B9B7A0F5EC8E69 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4D18B33E54EECAD91DCB46DB155FCC1B /* firebasecore.nanopb.h in Headers */, - C4CB4A4731C8355A00A3CB74256C0240 /* FirebaseCoreDiagnostics-umbrella.h in Headers */, + F27016A3E35CFF06DD3973B7F537D6D2 /* GDTCORAssert.h in Headers */, + B47EBE8E6F312164E7E1EDFA131C3B9C /* GDTCORClock.h in Headers */, + 3FCCEE497ED1CBF65E9FEDB0B4C9DA5A /* GDTCORConsoleLogger.h in Headers */, + 9D1B7E78822E4D50A69D828AC20028CF /* GDTCORDataFuture.h in Headers */, + EAAF0A62F6BFD579B061394E6BFBBBD2 /* GDTCOREvent.h in Headers */, + 26787381BD974F5B9D9F4406F6A440A3 /* GDTCOREvent_Private.h in Headers */, + 3D8F4CAD883144A11EF538ABAFEA264F /* GDTCOREventDataObject.h in Headers */, + 8A5A1CD9AF63C0B4BDCA9CF53AA6F09B /* GDTCOREventTransformer.h in Headers */, + 3820C62ADC78D113C4F6F9F684F49FAF /* GDTCORFlatFileStorage.h in Headers */, + 3B80EADA75415870518B23464AA89E38 /* GDTCORLifecycle.h in Headers */, + 57357502ABADCA40C35B742F0E76AC88 /* GDTCORPlatform.h in Headers */, + 925F54A0CA3AA62E69CA2BF57BA18E6B /* GDTCORPrioritizer.h in Headers */, + 69F0C07D63C1C270A7679CC419F4EC42 /* GDTCORReachability.h in Headers */, + A25F191AC7F1CB7F22DE2BF1B543EF85 /* GDTCORReachability_Private.h in Headers */, + 97B5CF51E1CA72ED599CB58B057DCB22 /* GDTCORRegistrar.h in Headers */, + 6FD3785ECD2A2DD56B7C2DD48C6590DE /* GDTCORRegistrar_Private.h in Headers */, + A99CE6F0B0E59154225004911A006BED /* GDTCORStorageProtocol.h in Headers */, + 0AE054386830558FA0A5894C961BD72B /* GDTCORTargets.h in Headers */, + BF48B3B5730C7C4345D604DED9768A64 /* GDTCORTransformer.h in Headers */, + A0CB058C98C779A20F880EF36548E8A4 /* GDTCORTransformer_Private.h in Headers */, + 29AD5BB53E3CC67F9C1459D45F28E9F5 /* GDTCORTransport.h in Headers */, + 9C08BD3951E9578DE1D418A263F28A3E /* GDTCORTransport_Private.h in Headers */, + 04CC92D85B59F1ACF01EC8B8DDC463C9 /* GDTCORUploadCoordinator.h in Headers */, + 111C6C3C97CAF8814D0BA17DF68B785D /* GDTCORUploader.h in Headers */, + F99801EC971746BD24313048CC509951 /* GDTCORUploadPackage.h in Headers */, + 796AD8B194812A6204236AB7D765FA04 /* GDTCORUploadPackage_Private.h in Headers */, + 048FB2D0C55E290D46BE323CBE15BD18 /* GoogleDataTransport-umbrella.h in Headers */, + 47CA2A7970780210D0512B852052A1C5 /* GoogleDataTransport.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B009BF0D7A558EBA72BF1F6C96853B3A /* Headers */ = { + B0C2ECC5DA72A9E85DE5A5F270EC4934 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DAC2425B9DB5CDA44B124002562DF020 /* Any.pbobjc.h in Headers */, - CEE57C276D11FC9D72109A1759541770 /* Api.pbobjc.h in Headers */, - D7CBA3EDCDFE3C3B7F793763A1EA4CEB /* Duration.pbobjc.h in Headers */, - B917CD9E33261DAFDBED41F876786C76 /* Empty.pbobjc.h in Headers */, - E7C5498224194337FFC29A5B0B3A12A1 /* FieldMask.pbobjc.h in Headers */, - EE56FCE09418D4C765FB078DCDF04DC2 /* GPBArray.h in Headers */, - 16E803C5F3C639753771FC9E90267E4D /* GPBArray_PackagePrivate.h in Headers */, - 08E5E8005BDD650783D79F4956ACA7E5 /* GPBBootstrap.h in Headers */, - 4B2D731A4F8BA681E09560E216E9FB48 /* GPBCodedInputStream.h in Headers */, - 1B4B78727AA4FE9361DFAC1D841AA08E /* GPBCodedInputStream_PackagePrivate.h in Headers */, - 9A190698BBE6E581B8BD9B9259749C96 /* GPBCodedOutputStream.h in Headers */, - C1CEE48914E9E024E8B0CEB770213299 /* GPBCodedOutputStream_PackagePrivate.h in Headers */, - 66FE1248811063D46428426D18BB425C /* GPBDescriptor.h in Headers */, - 6E67261AA5CE5A2E127881C8D5988D8F /* GPBDescriptor_PackagePrivate.h in Headers */, - A6AB2F1AE0DD83D47C17CA98AB7CDA08 /* GPBDictionary.h in Headers */, - 9F4E53A1A55BC3E545FA2A21EEEDE702 /* GPBDictionary_PackagePrivate.h in Headers */, - 76B66BAABAF9AB33993EAC4072F383C2 /* GPBExtensionInternals.h in Headers */, - 0BAA31A2288CAFA7F34D6282964E228E /* GPBExtensionRegistry.h in Headers */, - EAEA230B7ACAA30A28A0EA684E4D3207 /* GPBMessage.h in Headers */, - 7CC7B52D47586B822A1D37FAF594A2E6 /* GPBMessage_PackagePrivate.h in Headers */, - EDDF3B38A6A0E8A46BFEC45B1EA503D8 /* GPBProtocolBuffers.h in Headers */, - 2F8D37AFD08356AD249193781291475C /* GPBProtocolBuffers_RuntimeSupport.h in Headers */, - FCC3AD00702188C98562BF6F3B603F8D /* GPBRootObject.h in Headers */, - E6B3A8C4425B28169556B455A84558B0 /* GPBRootObject_PackagePrivate.h in Headers */, - C3E377CD7CFEC1583F8C66ADAFEBD04E /* GPBRuntimeTypes.h in Headers */, - B56494555E187194D371FA44E150B4C4 /* GPBUnknownField.h in Headers */, - 9EC8A2283B85384A8D76109D4473F551 /* GPBUnknownField_PackagePrivate.h in Headers */, - F56CFEBC507A1DCB7E54F54CFD9C80FE /* GPBUnknownFieldSet.h in Headers */, - 83A75276EDFA1D57B70CA8EA8F5FFC03 /* GPBUnknownFieldSet_PackagePrivate.h in Headers */, - 08C145CCC7984DA9988B54659EE82214 /* GPBUtilities.h in Headers */, - E17981A5D045E49F3D29045F5AEF55FD /* GPBUtilities_PackagePrivate.h in Headers */, - E3EB657EE008B121A856408ABD1BBC09 /* GPBWellKnownTypes.h in Headers */, - 63E563046618323625830826D55C68FC /* GPBWireFormat.h in Headers */, - 81B4D53B19928BB8C11B5F8B2797F9B5 /* Protobuf-umbrella.h in Headers */, - CD957EC7A09FEB439AC06A8ED76A7E34 /* SourceContext.pbobjc.h in Headers */, - AB1C2D211D431C511D6392ACF5DE8F66 /* Struct.pbobjc.h in Headers */, - 773DF2AB97AEC4AD655927F81C5CC79C /* Timestamp.pbobjc.h in Headers */, - A840CDB45FD2B5797F1356C35D897FAB /* Type.pbobjc.h in Headers */, - C4D253F712CBDE088C2DF4975E3A064A /* Wrappers.pbobjc.h in Headers */, + 3322B36F38A399ABFF2A6A76BDFF47F9 /* Pods-FoodScan-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4772,42 +5252,67 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B8EABAAF7455E3A2C8FA6B83ACC36AC2 /* Headers */ = { + B58130A064A290FA6044F6D6A3B8D4B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2E5F6CC9ECE4CF19AD07E88125144F17 /* FBLPromise+All.h in Headers */, + A366727FB650651ACE4D43416A86B5A3 /* FBLPromise+Always.h in Headers */, + 0D3A65850D7D7B772181139F657999E5 /* FBLPromise+Any.h in Headers */, + 64CAA87B30539AAA3D19679221D7C43A /* FBLPromise+Async.h in Headers */, + 091769C8BCC34033B6A672C0488E0371 /* FBLPromise+Await.h in Headers */, + 4E2DBAEE04D08F637A134D6AEA406544 /* FBLPromise+Catch.h in Headers */, + 9947CAF1AF4BE62F9304A7CF62F33E1B /* FBLPromise+Delay.h in Headers */, + 8D2E802B355DAAA378D6CFB98DAC18A4 /* FBLPromise+Do.h in Headers */, + 82DB400DFF18152E905CAB578E6D3D94 /* FBLPromise+Race.h in Headers */, + 629E16AD36F9806675D083DB9D9D6F37 /* FBLPromise+Recover.h in Headers */, + DCDE4AE78751F9E9A4779E09C32D4B7C /* FBLPromise+Reduce.h in Headers */, + E555204B5566A4BE37D0112FBEB429C1 /* FBLPromise+Retry.h in Headers */, + C39165C7BD1F0FA96014C82C3C443447 /* FBLPromise+Testing.h in Headers */, + 1D373059BA135DB2E1DF54C581F86CAD /* FBLPromise+Then.h in Headers */, + 4EA4C214AE8EAB184625E3A930B519EA /* FBLPromise+Timeout.h in Headers */, + B0B066097EB942ED648143CF3E2566F6 /* FBLPromise+Validate.h in Headers */, + F08BD6CC31EEAB56771FD51D85096876 /* FBLPromise+Wrap.h in Headers */, + 63328A5052BB4500F7A68CC082FA883F /* FBLPromise.h in Headers */, + 57BB72BE7454108FB494CDDA72E1C8E1 /* FBLPromiseError.h in Headers */, + 618F398AE3BEFAECBF92691BE8570290 /* FBLPromisePrivate.h in Headers */, + 9A72CC29125BE4CB0495DA500D5083C0 /* FBLPromises.h in Headers */, + 24FA3E5707E40394740B7501CC3CC801 /* PromisesObjC-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C0826BCDB413F29D7817F33E0BB1C21B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 80507F2374D2728D0A7EDB9C12D60EB9 /* FirebaseInstanceID-umbrella.h in Headers */, - 096FA3197E3F1DBF9E7327851D09D1D5 /* FirebaseInstanceID.h in Headers */, - 8CA509CD2E516884F880CC8A1A4B47F1 /* FIRIMessageCode.h in Headers */, - 1C53BE05658F8B1B6EB333BD33DF8789 /* FIRInstanceID+Private.h in Headers */, - C5B8B7CB9C0A3075CEF1401A80CFBBDF /* FIRInstanceID.h in Headers */, - C1CB05134C61365B653A56E298C8F2F2 /* FIRInstanceID_Private.h in Headers */, - ED09F70A64E4817CFD2792854BC1C335 /* FIRInstanceIDAPNSInfo.h in Headers */, - 29A6EDAAAE1A95613D4DB3D55E0101F5 /* FIRInstanceIDAuthKeyChain.h in Headers */, - 53FB6843449733355AF473B9F4AAAC0B /* FIRInstanceIDAuthService.h in Headers */, - 849CD8CB4D0F2ABE5EEF74DC0FF1DDA1 /* FIRInstanceIDBackupExcludedPlist.h in Headers */, - 96559A0151B5019CF41DBCCDC0F7197F /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */, - 5068A9ABEC28FE28695EB5F7FF9D0F85 /* FIRInstanceIDCheckinPreferences.h in Headers */, - 76EF12A9FE3BC2D5E1FFF0B71B09DCE8 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */, - 070C876D5DC8FA0F8A516280423C47CF /* FIRInstanceIDCheckinService.h in Headers */, - 37000570A54C3DE13626FF4C01FC8887 /* FIRInstanceIDCheckinStore.h in Headers */, - AE79D4BEAB37EA1F2B750B1B3DD652D5 /* FIRInstanceIDCombinedHandler.h in Headers */, - 98863E6DD7A9C7F8D126AC0C1913A704 /* FIRInstanceIDConstants.h in Headers */, - 7823B12C37845FD5E7CC8534A46D0E74 /* FIRInstanceIDDefines.h in Headers */, - 588BB7D3AE9936B4CC01BBC27CF2D4F5 /* FIRInstanceIDKeychain.h in Headers */, - BC40C276B0C6C701659ED8073ACA4ADD /* FIRInstanceIDLogger.h in Headers */, - 373326FE763A2BCD67CE0695B8C31EAC /* FIRInstanceIDStore.h in Headers */, - 9069B0116120263DA3AB7E4F5E0352F6 /* FIRInstanceIDTokenDeleteOperation.h in Headers */, - AF589E89D4DB80BE7798F370523D9639 /* FIRInstanceIDTokenFetchOperation.h in Headers */, - 912B2C213BFB27A21E159320B5EE2617 /* FIRInstanceIDTokenInfo.h in Headers */, - 3B3831975810DF62388F3C4ABA8E7BE2 /* FIRInstanceIDTokenManager.h in Headers */, - A30FE83C634F0B610759677766560328 /* FIRInstanceIDTokenOperation+Private.h in Headers */, - 0B2269572E9ED1F6BE7E453F1CD33308 /* FIRInstanceIDTokenOperation.h in Headers */, - F0BF2126D7ABA8E9695FFBFDD055AEA7 /* FIRInstanceIDTokenStore.h in Headers */, - 15C1802873BA715223F3B6A23E4E9C99 /* FIRInstanceIDURLQueryItem.h in Headers */, - 96D808A94EDBB67A629343B90EB8DED9 /* FIRInstanceIDUtilities.h in Headers */, - 0EFA84E9085865DD0DA0976B1F586763 /* FIRInstanceIDVersionUtilities.h in Headers */, - 94E8825734DEDE5AC8FDC1EDEE4F6D2E /* NSError+FIRInstanceID.h in Headers */, + 75685485169227D895A6AF094A9D478B /* FIRAnalyticsConfiguration.h in Headers */, + 01D79807B319F1ACDA88E81DB693C468 /* FIRApp.h in Headers */, + D9D95398C3C6634E1FCED34716162540 /* FIRAppAssociationRegistration.h in Headers */, + B90894D85EA58B057AFB268344DD7AB9 /* FIRAppInternal.h in Headers */, + 3F9535DEBB385A0E25267B71FBD8BCE6 /* FIRBundleUtil.h in Headers */, + 8315A97D1C193A0FD240B9C782711BCF /* FIRComponent.h in Headers */, + E2D9BED18C45B0BF129669C8E2F09E85 /* FIRComponentContainer.h in Headers */, + 3111980A4A1209A214F87FC453A09B35 /* FIRComponentContainerInternal.h in Headers */, + 6A1F0458C2521D5AE8130CF000C581E7 /* FIRComponentType.h in Headers */, + 5DF92ECA70BAB8579719793F32243195 /* FIRConfiguration.h in Headers */, + DCDD916A4847538381315E0374A6C1F5 /* FIRConfigurationInternal.h in Headers */, + C7D25672A36E55300FD38D8B890644A5 /* FIRCoreDiagnosticsConnector.h in Headers */, + EF6D2F00270B22DBDFB570B77F99F492 /* FIRCoreDiagnosticsData.h in Headers */, + 7E3E1790D82442ECE8767F843EA58979 /* FIRCoreDiagnosticsInterop.h in Headers */, + E70F398743D965201ABB19C2C811ED53 /* FIRDependency.h in Headers */, + C59E78BE357EE9B7F989C0D9EC2407E5 /* FIRDiagnosticsData.h in Headers */, + B17C72612C27C9A77AAB7318B92C97E9 /* FirebaseCore-umbrella.h in Headers */, + 70C2E07F1D35A259A63C9A9609B921C9 /* FirebaseCore.h in Headers */, + A4AAFD1C3432EBB7948E1B5DF03943CC /* FirebaseCoreInternal.h in Headers */, + 868326B6ADBCAAEF03692689C86E5754 /* FIRErrorCode.h in Headers */, + 4A2DC1B4EE512F75854167D9D4BBFA7E /* FIRErrors.h in Headers */, + 1EB1A8D6C29D499095DD0DFD4EA1D548 /* FIRHeartbeatInfo.h in Headers */, + 0172BE2FFACD1FC2E20E6691190CA1BC /* FIRLibrary.h in Headers */, + 5AA39ABD533D51F246A2FD9B2C55CE43 /* FIRLogger.h in Headers */, + 6032A7CBAC742DA858B124263D462D4A /* FIRLoggerLevel.h in Headers */, + E79C7AA4E83059BC0178A180C4FAAB5E /* FIROptions.h in Headers */, + 37F63143546DAE1AF3D50D42AF6B7812 /* FIROptionsInternal.h in Headers */, + 6DF72524BC92C834101579985318B7B0 /* FIRVersion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4819,66 +5324,84 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D944C7D694A3A077F7227B3D11EC9A8A /* Headers */ = { + D82028F365404254C9145D5F2D2DEC1D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6FAFC571ED512407980BC54D7D456DA7 /* Pods-FoodScanUITests-umbrella.h in Headers */, + 2FEAEFD59915D693EE3374E161504092 /* nanopb-umbrella.h in Headers */, + 4B09F047F53B913C31BA6CD2209456E3 /* pb.h in Headers */, + 422AFCB7FC0B311182A38433A186F5C3 /* pb_common.h in Headers */, + DAA9323D1D980D0954700E012065E781 /* pb_decode.h in Headers */, + 5B95A15BFFC18A744BC1BA25672A7D5D /* pb_encode.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EF94195A4F261600F6D577CC1A4152BD /* Headers */ = { + D944C7D694A3A077F7227B3D11EC9A8A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 166D5C2B254C64F82C58B9BB6013CEB1 /* FBLPromise+All.h in Headers */, - B6C6E09C64EAFBD7AE0E087BA2DD5062 /* FBLPromise+Always.h in Headers */, - A887C0F52F2BAEAEA5820F5B33D9AD37 /* FBLPromise+Any.h in Headers */, - 99160823FED835FCC8C51C78B4B41F49 /* FBLPromise+Async.h in Headers */, - 9CEA7FD30BA4CF54989A1C7923B005CC /* FBLPromise+Await.h in Headers */, - CC1884644EDC32A6B34DBE0608618504 /* FBLPromise+Catch.h in Headers */, - 9CEA36D68635F7E9457A32774CAB6A7A /* FBLPromise+Delay.h in Headers */, - 42B5079C7E85125D63D3FEBBFEFE84DC /* FBLPromise+Do.h in Headers */, - EF18819F1891EE2749141B2BE28E6DAB /* FBLPromise+Race.h in Headers */, - 69C560FDEA9EC9240CE68A27B4495E51 /* FBLPromise+Recover.h in Headers */, - 05CCAECD1A85D16D2D79159A6568CE54 /* FBLPromise+Reduce.h in Headers */, - 097805B4304C4FDDDE628EB546EFAF17 /* FBLPromise+Retry.h in Headers */, - CEDDB100390CA275D09FEC883188EB61 /* FBLPromise+Testing.h in Headers */, - 70290DDF7B315FF0E6175576663C391B /* FBLPromise+Then.h in Headers */, - D292BE135EB02BDBE64EFA6E0A6E0BC4 /* FBLPromise+Timeout.h in Headers */, - F56FB61D4B3B347DAF64341443201A59 /* FBLPromise+Validate.h in Headers */, - 7D971C9C5A48C7DC4FBEB11A897552D7 /* FBLPromise+Wrap.h in Headers */, - CE173BA31BB1843BC0CD957BF376E07E /* FBLPromise.h in Headers */, - CC549B8A0B201698F3A78E67A4816542 /* FBLPromiseError.h in Headers */, - 074AD6A89A6C7AEFD5051107E56F1067 /* FBLPromisePrivate.h in Headers */, - B83F217797AD5495CD923ACD234013D9 /* FBLPromises.h in Headers */, - 2A83CF71C9BDE564D115EE065E81D4B9 /* PromisesObjC-umbrella.h in Headers */, + 6FAFC571ED512407980BC54D7D456DA7 /* Pods-FoodScanUITests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - F1C3C84941E872B99EA508818BBE2196 /* Headers */ = { + DF3F71EF79C06A11642E5C9D4507403D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1CD4768680853319AF6D07245468DED8 /* GoogleUtilities-umbrella.h in Headers */, - 14B182482F12EFB41BDC42320B4C375E /* GULAppEnvironmentUtil.h in Headers */, - C98DDEB7DD194C2062560E399AB86C4F /* GULHeartbeatDateStorage.h in Headers */, - F791FAAC27BDBC831A713758AF465801 /* GULLogger.h in Headers */, - 0A197AD9D2A183B67615F070326E37AE /* GULLoggerLevel.h in Headers */, - 9D3EC8CCA9EBF144ADA4B6823A1791D8 /* GULSecureCoding.h in Headers */, - C0672926A56F1CB47AEAE387B354379C /* GULUserDefaults.h in Headers */, + 27F978660A33E723F2DC495CDD05A079 /* GoogleUtilities-umbrella.h in Headers */, + 1B358511CE9C9C8F38D7F2800B80FE04 /* GULAppDelegateSwizzler.h in Headers */, + 2E1CBB85278DF58900EB92B98341CC37 /* GULAppDelegateSwizzler_Private.h in Headers */, + 121D7002566ADED8377461C6E6C729C3 /* GULAppEnvironmentUtil.h in Headers */, + 6B57A88FE693631CA8B466DCAF54F004 /* GULApplication.h in Headers */, + AEA5D1FDAA3FC539B584D83B1B32EC66 /* GULHeartbeatDateStorage.h in Headers */, + C13B63B3B966C24766055AFDB4A67A2C /* GULKeychainStorage.h in Headers */, + C7CED5AE2E11EFFE0E72048BF6499391 /* GULKeychainUtils.h in Headers */, + 2CD7B12267D2B7671C37DA405AA567D0 /* GULLogger.h in Headers */, + 15C04C13DE77CE76B13796E498A7ED11 /* GULLoggerCodes.h in Headers */, + 321D2BC8625C97F7EF3AF647B2370E59 /* GULLoggerLevel.h in Headers */, + 0440F9FC699208FAB1505E492E0767AD /* GULMutableDictionary.h in Headers */, + A2EAC86DA99E890B856A0F28CE3629D5 /* GULNetwork.h in Headers */, + CE350F34D90EF40C493F65DF008E3F91 /* GULNetworkConstants.h in Headers */, + B1037CF0F757B9F79FF21EAF28ED5C80 /* GULNetworkLoggerProtocol.h in Headers */, + 56D1F45C59B39EBF49977AF74C48A79C /* GULNetworkMessageCode.h in Headers */, + 138F537248E2CE7CAA581B84C7B8134A /* GULNetworkURLSession.h in Headers */, + F1BC36380B45E6CBDA3F50A6B4159DBC /* GULNSData+zlib.h in Headers */, + 94E39972ECFA083B97C7377AC1E42015 /* GULOriginalIMPConvenienceMacros.h in Headers */, + 51D1C1F8E6ADAA879B5F5213EE82F815 /* GULReachabilityChecker+Internal.h in Headers */, + EBE5F1F602BE72BBA956F5085B73E62B /* GULReachabilityChecker.h in Headers */, + 4AA8A65DEAA36567A952A4CE55933845 /* GULReachabilityMessageCode.h in Headers */, + F1AF2078B770C8AAC4A275D925733E87 /* GULSceneDelegateSwizzler.h in Headers */, + 915240BB603BEE11819A86490042A27A /* GULSceneDelegateSwizzler_Private.h in Headers */, + ED34860B87CE8E30EFCEB7E77078B3A7 /* GULSecureCoding.h in Headers */, + B7829FC91D5DF2BD63889DBBBA40CB1A /* GULSwizzler.h in Headers */, + 1F34369311D9EDCFE9017ED352BC7D35 /* GULUserDefaults.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4BAB51127CF05A35B2C45DD70AC15B1 /* Headers */ = { + E7D6C3ED1C82443A3F405AADB2A87EDE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F67E68CAAD69E21F6E309433B6CA72C7 /* nanopb-umbrella.h in Headers */, - 245D0BECBDA2AD70E37386646825D53D /* pb.h in Headers */, - D65D184D38138D9F7B875C327A947C2E /* pb_common.h in Headers */, - 5466976C48922B549F49B74814B33242 /* pb_decode.h in Headers */, - 0473B90D4464C1606B0ED3554B447389 /* pb_encode.h in Headers */, + 811DC8999094E7C4B11C3ABF801B94FD /* GoogleAPIClientForREST-umbrella.h in Headers */, + 01BBC0FFA68B7B4B99FEA7B085CCCF68 /* GTLRBase64.h in Headers */, + 16944AE804F90B7E184EE7AAD0676661 /* GTLRBatchQuery.h in Headers */, + 855ACA5F1484F04CE7180AFEA2E8CBD8 /* GTLRBatchResult.h in Headers */, + C99809B88783BED65F73A0DAF7D86392 /* GTLRDateTime.h in Headers */, + BF8CEA5EE7181B94F74E4DF9B5E8AB27 /* GTLRDefines.h in Headers */, + 17C836882B190E6C4E4ADE4CA0E14A45 /* GTLRDuration.h in Headers */, + 647437594A0DBC26288F678162518794 /* GTLRErrorObject.h in Headers */, + 8BC2F8A9299B2E08723AC8B88AF87636 /* GTLRFramework.h in Headers */, + F749D438AB6EE8A02FDACFF566BB4599 /* GTLRObject.h in Headers */, + CA2DF984C4A1CB6448145E0CCF605362 /* GTLRQuery.h in Headers */, + 82E954CCDC8B0BAC5D1AACDDFEADAEFB /* GTLRRuntimeCommon.h in Headers */, + 9CBEBEC4E1234707D1C33F8B080B7DA0 /* GTLRService.h in Headers */, + F39ABC563F488CF2727A0E8C971C6CC2 /* GTLRUploadParameters.h in Headers */, + 7FA5EA80E726DC3BC864CD6C1CE923D7 /* GTLRURITemplate.h in Headers */, + FEAEA82451703623F498E7A60264D9EC /* GTLRUtilities.h in Headers */, + AED2958984CCA20BA9DD16F467E341D6 /* GTLRVision.h in Headers */, + 8F0FE9FD26E9585F404B7A6760D7D3C2 /* GTLRVisionObjects.h in Headers */, + 56143FD3EBDA10D1E7F2DCB3E76B5B6E /* GTLRVisionQuery.h in Headers */, + C6C5AE2D74A9A7ABA6D4097CCA2278F7 /* GTLRVisionService.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4915,7 +5438,7 @@ buildRules = ( ); dependencies = ( - B862E85620BB966D66B36558671CAB1D /* PBXTargetDependency */, + C58CF25B4B7ED50952BEDC652A163268 /* PBXTargetDependency */, ); name = "Pods-FoodScanTests"; productName = "Pods-FoodScanTests"; @@ -4924,12 +5447,12 @@ }; 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */ = { isa = PBXNativeTarget; - buildConfigurationList = ACB3C4D35F41C77195BF9C6B5BCAB59B /* Build configuration list for PBXNativeTarget "SnapKit" */; + buildConfigurationList = F7F0CFEF6216AF5BA0DD300F37633B56 /* Build configuration list for PBXNativeTarget "SnapKit" */; buildPhases = ( - 8A9FBE720046465650C95C80C46C1B41 /* Headers */, - DB126AE23CD37074BE52B6F65D7F3CC1 /* Sources */, - BC0F9DC6FB33F55E96644184C253EA68 /* Frameworks */, - A9FEFD0F15A8FBB8B0F4705EFB417DC1 /* Resources */, + 36DD58BC2F83D1F8A1DCDF6633429F53 /* Headers */, + B1BFE211605667AA0C4EB9C20017D8ED /* Sources */, + B90191500CA804B77BE12F825AA1A87C /* Frameworks */, + 740FEB638107CD89474B57E09C9B187C /* Resources */, ); buildRules = ( ); @@ -4942,14 +5465,14 @@ }; 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */ = { isa = PBXNativeTarget; - buildConfigurationList = BA768AC0AF0F2C150F0E6488EBC993E3 /* Build configuration list for PBXNativeTarget "PromisesObjC" */; + buildConfigurationList = 6743550A2728FF0005D5D949F05BAEB0 /* Build configuration list for PBXNativeTarget "PromisesObjC" */; buildPhases = ( - EF94195A4F261600F6D577CC1A4152BD /* Headers */, - 20DE3993C429955F6928E8DB7A3C9703 /* Sources */, - 5C2490C24FA2B49FC5B7F84A082A48B4 /* Frameworks */, - E051F8695B2721A88C551C35544867CC /* Resources */, - D0894A91FC66F8315B2B18C927E24C97 /* Copy . Public Headers */, - 6E3117FB0F0B100259E003D943299EB8 /* Copy . Private Headers */, + B58130A064A290FA6044F6D6A3B8D4B4 /* Headers */, + 4A8043435ACC7DC3ED56F7BF0FB913BA /* Sources */, + EC3801927A39ADB5CF7633B776D4CBD8 /* Frameworks */, + 88B27A0D5014E1CD3CB6A3425B8A7789 /* Resources */, + 0C5FF528C23906780D7B0F39168BC2DC /* Copy . Public Headers */, + D06F1628EED68EE008797383ED26BEBA /* Copy . Private Headers */, ); buildRules = ( ); @@ -4972,8 +5495,8 @@ buildRules = ( ); dependencies = ( - 98EB5E34B40A0F5C91B5693A30936E0B /* PBXTargetDependency */, - 13B72D8EB7254390A3D35B338DCB83B2 /* PBXTargetDependency */, + BB3F5671A9D512EEA7EABFB6F4C9A1E1 /* PBXTargetDependency */, + D98FD2CFD6EE8CA4BBD153D4F01B984E /* PBXTargetDependency */, ); name = NotificationBannerSwift; productName = NotificationBannerSwift; @@ -4982,46 +5505,46 @@ }; 37BBF22A0E981064B619306ED6E4F13D /* Pods-FoodScan */ = { isa = PBXNativeTarget; - buildConfigurationList = F6A0C8680AB9536A74B6D850E90608F5 /* Build configuration list for PBXNativeTarget "Pods-FoodScan" */; + buildConfigurationList = BE572A4A25A0CEAD79EF28CF9816E9CB /* Build configuration list for PBXNativeTarget "Pods-FoodScan" */; buildPhases = ( - 14B0E4A911C33A06140CC1BF137FB2CF /* Headers */, - 8B7CB7B4CB70CFCDE100590FD0F2E36E /* Sources */, - 44B6A3CB88986B01732E1E57E10CBEF3 /* Frameworks */, - B435747A9E2044277B17C612ADC9BE67 /* Resources */, + B0C2ECC5DA72A9E85DE5A5F270EC4934 /* Headers */, + FFF6A6C7DAE2CC938393D8ECADBAC578 /* Sources */, + 7E9E5348200A036673390A6D667F6C6A /* Frameworks */, + 1147DB16E3F5FB56B4369E97CE4E2A8B /* Resources */, ); buildRules = ( ); dependencies = ( - A9CB5ED856AA63D63F700A3826ABABB5 /* PBXTargetDependency */, - 23D5743774E19860D6D8C8DEECE34497 /* PBXTargetDependency */, - 80B54E167AD5A467FD37D59359A4B139 /* PBXTargetDependency */, - C50044BE9F3B1ED9379D4FF2EB6B3E15 /* PBXTargetDependency */, - A3FB902844526E235AED5B722308A8A7 /* PBXTargetDependency */, - C25D306C05016E999E64861F5C2CABA8 /* PBXTargetDependency */, - C8FEEC82C3CB9647146D5FD965425279 /* PBXTargetDependency */, - 894E1CBD62C2C42F1D074B2F8B9B5E9E /* PBXTargetDependency */, - 2857774EADCA851F076F4A79FA1962D4 /* PBXTargetDependency */, - 9A0B22B2114BAA2545F2C71ECECD68A6 /* PBXTargetDependency */, - A4C3C9945377A4354F6920DF1809345A /* PBXTargetDependency */, - 16683F6CF9882238ED2A92380A91FD13 /* PBXTargetDependency */, - BCD45C74E6F660AF557C6BA9FEB0B338 /* PBXTargetDependency */, - 6F68F846D54B547993C9519F1CE15801 /* PBXTargetDependency */, - 664F26396E82F77EC3827C98DC516F9E /* PBXTargetDependency */, - EE1263424EE671DB47DD375331CCAFCF /* PBXTargetDependency */, - 94FB43E7E896EB4F517FB43B85BC8475 /* PBXTargetDependency */, - 5881ACA4806D218DA6CD994256F9B2F1 /* PBXTargetDependency */, - 2489397044071C156F5DC3B67DFAE485 /* PBXTargetDependency */, - 52F53134BB3A9727B90CAD96E3B7709C /* PBXTargetDependency */, - 6DFC52D1628C1CFAE4E0B45C940E2460 /* PBXTargetDependency */, - D77387782E8E17624D9851E8C7A7C4E6 /* PBXTargetDependency */, - 849A37DB0819C207B055038E5C516639 /* PBXTargetDependency */, - 3AF95B7C05314B4DB4C67EA83E4B3F1C /* PBXTargetDependency */, - 2D190813E2E43F2D00070B18BB2C8C10 /* PBXTargetDependency */, - 78A901ECE524AF6A097D63028C5083DD /* PBXTargetDependency */, - FA320F006B61E393D03FBC90BF2C86A3 /* PBXTargetDependency */, - FCDC11B63E25604298F4EA5EBDBAD866 /* PBXTargetDependency */, - 7D17323AFBD5A2046939EFBB0ED98590 /* PBXTargetDependency */, - 82DB68511E14E75B1C5C1B4439D542A4 /* PBXTargetDependency */, + D19715D7386FDF67706421A2B6872BD2 /* PBXTargetDependency */, + BF5D7F045B889FC9DC6E429E061D9E17 /* PBXTargetDependency */, + 9C6411E0AE97F8A58A40E299C2B64EB5 /* PBXTargetDependency */, + 743668BC7FC707A4536872EF86978664 /* PBXTargetDependency */, + 7E7189CBCF55C9F3EEEE62328F6E04A3 /* PBXTargetDependency */, + DA0F82CF5BEF5A356FE27814D901DD1F /* PBXTargetDependency */, + 952C81D3C5506169125E759138585FA0 /* PBXTargetDependency */, + A48C0B83A36EF6D9807578164A111D78 /* PBXTargetDependency */, + A8901FD3FB366F4CFAA59D0D385C221A /* PBXTargetDependency */, + F891C36D19C78976C2104CF24A578287 /* PBXTargetDependency */, + 14175F7BBA77A0958BCF1388AB4F4FD1 /* PBXTargetDependency */, + 21C519D3CBB53D3F3A971F4107325752 /* PBXTargetDependency */, + 6DCF89B9376173CD828A0ADC69E1795B /* PBXTargetDependency */, + C32639F8888425A3999E8869A27832B2 /* PBXTargetDependency */, + 402B90D272B9691D8EC7747C225A0C54 /* PBXTargetDependency */, + CBFD22D45847D5264FEB361AD4E02CC7 /* PBXTargetDependency */, + 1A379535ADA640DF69E8CA8AF297ABAC /* PBXTargetDependency */, + 9201837927D7D23019005AA0C7EC36C2 /* PBXTargetDependency */, + 662D69E4D2194496C6661927A0BF360E /* PBXTargetDependency */, + 119730CC2E214B418F605B042525542F /* PBXTargetDependency */, + 6F442D39B7D41876611A0A93EB44CD13 /* PBXTargetDependency */, + 49B0D9C8407489B33714FB7D3EEAB6BA /* PBXTargetDependency */, + 29060A66FFC64B4ECC3054E7B1480B69 /* PBXTargetDependency */, + B81F5D4B94D0F0AEA901C51921B6192B /* PBXTargetDependency */, + C8E31493B5C204E7DF261950EA8D5E41 /* PBXTargetDependency */, + F420FC6C600B953E989A24DC56BD2D83 /* PBXTargetDependency */, + 51A3687BE584021C2F3255D05A5E1ACB /* PBXTargetDependency */, + 41C2444631B73648E5A349144DCF19C9 /* PBXTargetDependency */, + 2A441EAA3268B3CE4F9EC7EF3CB6FB26 /* PBXTargetDependency */, + BFCBA725A527E4DA06C1DA9CBE0F0A57 /* PBXTargetDependency */, ); name = "Pods-FoodScan"; productName = "Pods-FoodScan"; @@ -5048,19 +5571,18 @@ }; 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */ = { isa = PBXNativeTarget; - buildConfigurationList = D757E239B053B2DED3C2B79C146D35C5 /* Build configuration list for PBXNativeTarget "FirebaseCore" */; + buildConfigurationList = D3578FCADC3A3BD0240FC5A3466D57B3 /* Build configuration list for PBXNativeTarget "FirebaseCore" */; buildPhases = ( - 83347182134B16FB63455D3D73DBC418 /* Headers */, - 57B6E9DD79F5CEFBD1DEF7F4D9909376 /* Sources */, - 7F914E065031ABE94908A35D3126EC5F /* Frameworks */, - 2E13D22C1091F1C29EF57EF64925FAAC /* Resources */, + C0826BCDB413F29D7817F33E0BB1C21B /* Headers */, + 2578BF94F775DEBB24F062177A0B49F8 /* Sources */, + 062C331594B0380D38D495F3ABE969E4 /* Frameworks */, + D87AA36A454E79F1256F043F03A5138D /* Resources */, ); buildRules = ( ); dependencies = ( - 934FD63938902294E34EDECFF8ACA1C5 /* PBXTargetDependency */, - B7D254F67B7AA69B4F585EABD11B32B3 /* PBXTargetDependency */, - 45754485D421A319D0316B8FEA8253CB /* PBXTargetDependency */, + 9D0665A2858A74C93A390439611B24A7 /* PBXTargetDependency */, + C4B1C68DF6540E90A5E3492870304E8C /* PBXTargetDependency */, ); name = FirebaseCore; productName = FirebaseCore; @@ -5069,12 +5591,12 @@ }; 470FE31978DC918618A329D8B55C85FF /* Protobuf */ = { isa = PBXNativeTarget; - buildConfigurationList = 73C33EF8C727F1BDE6C6AF0A4A3E5B81 /* Build configuration list for PBXNativeTarget "Protobuf" */; + buildConfigurationList = 64CD42B74C368FF94373FF081222444D /* Build configuration list for PBXNativeTarget "Protobuf" */; buildPhases = ( - B009BF0D7A558EBA72BF1F6C96853B3A /* Headers */, - 3F9427433AF6001EABAC4D76C8980959 /* Sources */, - 273CB2E10009D287C9CB8C6805CAEE82 /* Frameworks */, - D18B2B2B572517A27CC5824337A83A7C /* Resources */, + 38E3B75AB4DF672ADFC9BCB83AB7027B /* Headers */, + 9EC816E3A3ECD1F4210B088FB507019D /* Sources */, + D2BBEE4F2DAB26505C8F4DB21AB99ACE /* Frameworks */, + 42D674ABE6AD08652C5E458DBB2698C1 /* Resources */, ); buildRules = ( ); @@ -5082,25 +5604,27 @@ ); name = Protobuf; productName = Protobuf; - productReference = C2105C94812B6214B154F54DCEDB72AC /* protobuf.framework */; + productReference = C2105C94812B6214B154F54DCEDB72AC /* Protobuf.framework */; productType = "com.apple.product-type.framework"; }; 526C4398D095B3704EB933DADBC30093 /* FirebaseCrashlytics */ = { isa = PBXNativeTarget; - buildConfigurationList = AFDCDB9649965A4857F97CDAC7F63524 /* Build configuration list for PBXNativeTarget "FirebaseCrashlytics" */; + buildConfigurationList = 9E7B4E8C259478E2998E0A432A4F432F /* Build configuration list for PBXNativeTarget "FirebaseCrashlytics" */; buildPhases = ( - 01AB23B9CF81BB1196BA512F5DB923E1 /* Headers */, - A9EC93C7830E5073DE196B687E260971 /* Sources */, - 319C5F9BFC2766843668895937ABE123 /* Frameworks */, - 5FFECE28AF94686C940C2756A25FDC29 /* Resources */, + 15D0B27B695FB6C4CF05DB0D68AD553D /* Headers */, + C6F84DA2C48197CD26668B2D2DCA8F2E /* Sources */, + 6FDA6E979003F407387837DDAE52429C /* Frameworks */, + C5AFB933E7D9BE1BDA716CDCFC8BF110 /* Resources */, ); buildRules = ( ); dependencies = ( - 3C01E8B2ABDACA4ADB4A94F28E28C01F /* PBXTargetDependency */, - BE09C57E414DEC9BDCFAE576C6437788 /* PBXTargetDependency */, - FAA00EC69E57E2D641AC8F8B26ECE96F /* PBXTargetDependency */, - 708B866795A1A1010D3D57DCEE708F59 /* PBXTargetDependency */, + F3C6382B3DA5FE342F8FB684F40696A2 /* PBXTargetDependency */, + 3F78FAC9BCFBD96FCB0F2DD685722798 /* PBXTargetDependency */, + 35D4DDDC46BCC1F80CAF350CE40B8A0B /* PBXTargetDependency */, + CA6A7565F1462714AB5938B57DBF02FA /* PBXTargetDependency */, + 425FACFBBC84B6572FCB11121ECBFE8C /* PBXTargetDependency */, + E01A59D8F3CF604D99E5E3CA2E56E2CE /* PBXTargetDependency */, ); name = FirebaseCrashlytics; productName = FirebaseCrashlytics; @@ -5109,12 +5633,12 @@ }; 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */ = { isa = PBXNativeTarget; - buildConfigurationList = B97953EEDAD925CD2AF043ADB8ABAC6F /* Build configuration list for PBXNativeTarget "GoogleDataTransport" */; + buildConfigurationList = 55427FA3DF46D850EF14DD5FF65D5214 /* Build configuration list for PBXNativeTarget "GoogleDataTransport" */; buildPhases = ( - 01A2903FFDC71B013A0AA418CC0BFE82 /* Headers */, - B8A0808788D29BA6DDD0494AF33823DA /* Sources */, - CC222127A7F61BA644F7AEABF537A456 /* Frameworks */, - A216AEDC3CF83CB54AA7930C0F83EC1D /* Resources */, + A443E9FB917C7A6658B9B7A0F5EC8E69 /* Headers */, + 2A631AACA4277AD0A10E844DF46ECD30 /* Sources */, + EF965D3AB68861CF8550B2EFDD87F7F6 /* Frameworks */, + E3F2B9BF85C55A6FEDA457F570459F89 /* Resources */, ); buildRules = ( ); @@ -5127,11 +5651,11 @@ }; 5EC12DD71E5A7D44401B62506C027F8C /* FirebaseMLVisionTextModel-GoogleMVTextDetectorResources */ = { isa = PBXNativeTarget; - buildConfigurationList = 91B5A6735CBB71E3B66613923364759F /* Build configuration list for PBXNativeTarget "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources" */; + buildConfigurationList = 0DCC494BF14EEA1CF3093D636403315A /* Build configuration list for PBXNativeTarget "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources" */; buildPhases = ( - 33B6243B148B7338184DA6875073D98F /* Sources */, - B215CE39328DB615ABBF5531B39D5B7B /* Frameworks */, - C113FA4C0E2C4BD6DE06BF0B3D12D797 /* Resources */, + 9FDC14F8B84294B4D2AFD05F8241E7E9 /* Sources */, + 8BA2DAE5BC327A6F4CC2328351911F46 /* Frameworks */, + 5F9480E6B1D96F3172240E7464EB9C84 /* Resources */, ); buildRules = ( ); @@ -5154,7 +5678,7 @@ buildRules = ( ); dependencies = ( - 90039FDA1A42F389A309D3047AA3966C /* PBXTargetDependency */, + DE46287315CEA5C49D19D4964694A05B /* PBXTargetDependency */, ); name = "Pods-FoodScanUITests"; productName = "Pods-FoodScanUITests"; @@ -5163,20 +5687,19 @@ }; 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */ = { isa = PBXNativeTarget; - buildConfigurationList = 8F71C886E2770F4B4C0E580B17013ACC /* Build configuration list for PBXNativeTarget "FirebaseCoreDiagnostics" */; + buildConfigurationList = 955BB0450ACD981A8189C5E5E3CFBB66 /* Build configuration list for PBXNativeTarget "FirebaseCoreDiagnostics" */; buildPhases = ( - 9F288337DFF43B4151C636C6D5C28667 /* Headers */, - D66E68C856271BD40666350A200958E6 /* Sources */, - ECBB5225CD8FADFE7A5AB03EE4D74B27 /* Frameworks */, - 4778FC3DB14D5A3E60C4A373618ADE6E /* Resources */, + 743283627D328A86DD5478325C637B1A /* Headers */, + 84462AFF83400C69E0749E548ED1F2ED /* Sources */, + 41DACCA91CE935BB8D73C48F4A8AF0EB /* Frameworks */, + 3CE8E709945F04EA519083496E5A33CB /* Resources */, ); buildRules = ( ); dependencies = ( - 923096D325082E5325E5546212562573 /* PBXTargetDependency */, - 3C5F60AF22C3DAA1CC3002A0150E64A2 /* PBXTargetDependency */, - B49A68B10F393CC12E6A9B19FEB41B08 /* PBXTargetDependency */, - 4B577783489C73939B15F79221B25069 /* PBXTargetDependency */, + 3320BF98D212E30C4B2AE85F91010B30 /* PBXTargetDependency */, + 3DC6536EB5E08DCED4EA2535D1431C4E /* PBXTargetDependency */, + 58C88E366DCDEFCE5312D06E00F236F4 /* PBXTargetDependency */, ); name = FirebaseCoreDiagnostics; productName = FirebaseCoreDiagnostics; @@ -5185,19 +5708,19 @@ }; 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */ = { isa = PBXNativeTarget; - buildConfigurationList = 47A99EB7F89BBC2A6762F2D4D2AFED6B /* Build configuration list for PBXNativeTarget "FirebaseInstallations" */; + buildConfigurationList = DBAA82024243128E2D76FD693647727C /* Build configuration list for PBXNativeTarget "FirebaseInstallations" */; buildPhases = ( - 51C5136FAFB41E512976A3FD90B753F9 /* Headers */, - A4C63DEF277F25BEE9E8C5F03EB6E9B9 /* Sources */, - 8A0AF578D5997E1536916EDD9EBF14FC /* Frameworks */, - C00987D8CBACED76C21B0FD8F7B1FBE9 /* Resources */, + 7AD81A91290CDE684B57CAFD63F9931D /* Headers */, + 1742095D0BD094A2250B67310CCB34AB /* Sources */, + 244AE45330492B29309D82C86D1E1A14 /* Frameworks */, + B8A52BBC430E79DADE527983111A56B6 /* Resources */, ); buildRules = ( ); dependencies = ( - B80C6C560AFACFA5AB72ABEE08F000E5 /* PBXTargetDependency */, - 1191F68A79238FBD2728C71F03BF4567 /* PBXTargetDependency */, - 0C6F286EA1308548FC7C8F3FFDBC4EC4 /* PBXTargetDependency */, + 4638C27110C7C986AE33C4FC02E2DDB1 /* PBXTargetDependency */, + 07185917B0DF8D42E3450862A9332DDF /* PBXTargetDependency */, + 279D340FEF1B7D6567E1E36927D9B08A /* PBXTargetDependency */, ); name = FirebaseInstallations; productName = FirebaseInstallations; @@ -5224,16 +5747,17 @@ }; 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */ = { isa = PBXNativeTarget; - buildConfigurationList = 2AA16AD438D0C180DF37010E9A376C87 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */; + buildConfigurationList = A15FBA602532F7B8EA066087F79A63E7 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */; buildPhases = ( - F1C3C84941E872B99EA508818BBE2196 /* Headers */, - 3EB7342099D176448655231A305AFA8D /* Sources */, - 002795D51F540FD2E724C25053B69CEA /* Frameworks */, - 82B8858A7AE704BF2EEEC76D241B26FF /* Resources */, + DF3F71EF79C06A11642E5C9D4507403D /* Headers */, + 564318D87958404F65C28FFD852A69E9 /* Sources */, + D74DC90654EA60B982AEE7F8B48F4593 /* Frameworks */, + 4C3D338583C3EE48DD468F6E79E96D81 /* Resources */, ); buildRules = ( ); dependencies = ( + E94077BD7C9C22BBF315A59003D8B739 /* PBXTargetDependency */, ); name = GoogleUtilities; productName = GoogleUtilities; @@ -5242,19 +5766,19 @@ }; 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */ = { isa = PBXNativeTarget; - buildConfigurationList = F2DA19E929AF19DBEBE2FDC7D57D8036 /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */; + buildConfigurationList = C1613797DD71EC294C39987C609BA161 /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */; buildPhases = ( - B8EABAAF7455E3A2C8FA6B83ACC36AC2 /* Headers */, - 32D46587714EC1B57AD96A64114B7091 /* Sources */, - 83D17A0F0604662C26923284FD6DEFF6 /* Frameworks */, - 9D5A3AC5C345F937592C2DD02BBABABD /* Resources */, + 6E22A3973F9433967D3DE6D3505E709C /* Headers */, + 232CA0F1ED64530B6D46ACC9A7E39ADD /* Sources */, + 9BE2E908FD76AC673853AB8E7427C503 /* Frameworks */, + 24A3B45481B8E1FF918C29B39809D374 /* Resources */, ); buildRules = ( ); dependencies = ( - 5B55E15B33BAA67F79AFB259D0AFB7F1 /* PBXTargetDependency */, - 0541EB09F37A7209497C2011D03E46F7 /* PBXTargetDependency */, - 262146E74B6288CE938F63EAC1611BB9 /* PBXTargetDependency */, + 08D2EA44C1F723D9F96D728CAC968F65 /* PBXTargetDependency */, + 2EB9D86647D96FC75C9BC2B4E78A661C /* PBXTargetDependency */, + 66A75374ECBF6EFBE93D16B29DA941A5 /* PBXTargetDependency */, ); name = FirebaseInstanceID; productName = FirebaseInstanceID; @@ -5335,12 +5859,12 @@ }; D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */ = { isa = PBXNativeTarget; - buildConfigurationList = 02D7694EB080CF42C858728AAD66C0BC /* Build configuration list for PBXNativeTarget "nanopb" */; + buildConfigurationList = 53CD17FD818A2654347BF8526FB00DED /* Build configuration list for PBXNativeTarget "nanopb" */; buildPhases = ( - F4BAB51127CF05A35B2C45DD70AC15B1 /* Headers */, - BE1409F87BD513DBEC4F590379C401C8 /* Sources */, - B2B8CB6C3FDBE8636526A7929D0C92BC /* Frameworks */, - EEEED43FE340704F1EEFFFD8C7B3B5E8 /* Resources */, + D82028F365404254C9145D5F2D2DEC1D /* Headers */, + BB4101FF9F8777A789994C6AF6440267 /* Sources */, + 3A7029A911C9423E765CF1C7FF89E980 /* Frameworks */, + FB19778E1C3BF1CD4484F7B8ACA2F9DF /* Resources */, ); buildRules = ( ); @@ -5353,12 +5877,12 @@ }; D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */ = { isa = PBXNativeTarget; - buildConfigurationList = C1798E9E9BC8A11EB7ACFC2AABE56123 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */; + buildConfigurationList = 91F73F4638C44826B38EFC1A70698C73 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */; buildPhases = ( - 13A42C6953814A0B7201C04A824F0BA2 /* Headers */, - 782CBE6A72B17AF690F65A1EE54AAE32 /* Sources */, - 11C9171A626A0DA921D6B099BA41C223 /* Frameworks */, - 90737FE1CA00FD453941D573FCCA38B3 /* Resources */, + 4AA77B76C07734738F6F91B95B01463C /* Headers */, + B497D8B3F8B0674C62A8919B5A29CCB2 /* Sources */, + D4172A379AA8BA5488CB7418BBE741B9 /* Frameworks */, + 36066CF8380260ECF64B3C1FEE5D3FCD /* Resources */, ); buildRules = ( ); @@ -5371,12 +5895,12 @@ }; D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */ = { isa = PBXNativeTarget; - buildConfigurationList = B8BEE5E64FA4F96A6BF87FDA533BB5C0 /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */; + buildConfigurationList = 820F019EC246F86111E74E378949567E /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */; buildPhases = ( - 87E23D25E5A727E7F0D0846A58841BB6 /* Headers */, - B32DCA4FEF58BDA175E422315F953A4F /* Sources */, - 790CE81C6B8A2801C2578631F640B15F /* Frameworks */, - EC071BAA97BC24E4DDAF499DCBE48543 /* Resources */, + 485C1D1230020ECB5B0A15D69BBBC107 /* Headers */, + E928FE642F44DBF6F47013A262620603 /* Sources */, + C8E14FFBE79BAAE23D6C6D1850D43AD6 /* Frameworks */, + 2B16B5AF463BB1870099480EB6FD36F1 /* Resources */, ); buildRules = ( ); @@ -5389,17 +5913,17 @@ }; D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */ = { isa = PBXNativeTarget; - buildConfigurationList = EC53BC4CFF9A7908CA393E1C0589BA05 /* Build configuration list for PBXNativeTarget "GoogleAPIClientForREST" */; + buildConfigurationList = 16FB06BA9CA3339C32B686430DD62154 /* Build configuration list for PBXNativeTarget "GoogleAPIClientForREST" */; buildPhases = ( - 2B486E6455EE5D92949C34F1D54654AE /* Headers */, - 35DB17D4D6595A817DB0747B4B4D1BBF /* Sources */, - 8DA48E8C9E0B001C9F6EDC4F16F770D7 /* Frameworks */, - 24BABEA4B0ADFECCD28FAC14492BA293 /* Resources */, + E7D6C3ED1C82443A3F405AADB2A87EDE /* Headers */, + 0CB26A72520F9D20BD2913A4D5FAAD61 /* Sources */, + D96C94DB05BE1A5E0BC85331FBD4C9B0 /* Frameworks */, + D344688685FD32137E21301E5E97E22F /* Resources */, ); buildRules = ( ); dependencies = ( - 469E6621367F78B12367143E2E7611EE /* PBXTargetDependency */, + DF6B72108DB1E3F8076C95CE269FA149 /* PBXTargetDependency */, ); name = GoogleAPIClientForREST; productName = GoogleAPIClientForREST; @@ -5426,18 +5950,18 @@ }; F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */ = { isa = PBXNativeTarget; - buildConfigurationList = 70B80A11D9217C4413A9460E6A45F312 /* Build configuration list for PBXNativeTarget "GoogleDataTransportCCTSupport" */; + buildConfigurationList = 265B9F58322941CCA42DFCF73A54630A /* Build configuration list for PBXNativeTarget "GoogleDataTransportCCTSupport" */; buildPhases = ( - 2DD8D6F299A77310B7C22612D5EF3176 /* Headers */, - E86F6BE74008728E570AA8466C54402F /* Sources */, - 16D55F2C2A27E85A4CF70EAB249CD87E /* Frameworks */, - 2D66B49C37641F489074D41D6967877E /* Resources */, + 5213D266DBA9F3A1A5A2AAF4E88DD6A5 /* Headers */, + 4F421029E15A055FF97B0C7286C10701 /* Sources */, + 4E84FD41B0BEEFCBA02FABE85A5CA9CF /* Frameworks */, + E6BF5B0440761109E971C166E97A150D /* Resources */, ); buildRules = ( ); dependencies = ( - 9685C2F91F25CE2958B30D3A4F1D5F71 /* PBXTargetDependency */, - FEEC05D06D500DE22DA429C694EE8636 /* PBXTargetDependency */, + 41C04C3861551723CE9501FC98893A4D /* PBXTargetDependency */, + 7D71CC47542D89009BA1492813F4CCD4 /* PBXTargetDependency */, ); name = GoogleDataTransportCCTSupport; productName = GoogleDataTransportCCTSupport; @@ -5462,17 +5986,16 @@ Base, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 70B030E4B653B6DEA2D07CF51EC93E50 /* Products */; + productRefGroup = 051E9A9AB4BCA93C6BEA03535E170DE8 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */, 00F31BD5217A20974B5E9AAC6256D98E /* Cosmos */, 072CEA044D2EF26F03496D5996BBF59F /* Firebase */, - D372E53E2E8FEAA06A0439FB85E65767 /* FirebaseAnalyticsInterop */, + C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */, 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */, 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */, - 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */, 526C4398D095B3704EB933DADBC30093 /* FirebaseCrashlytics */, 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */, 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */, @@ -5481,6 +6004,7 @@ 7ABC58EF037E8B5BE0CD776D0D629DE6 /* FirebaseMLVisionTextModel */, 5EC12DD71E5A7D44401B62506C027F8C /* FirebaseMLVisionTextModel-GoogleMVTextDetectorResources */, D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */, + B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */, 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */, F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */, D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */, @@ -5505,204 +6029,204 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 230F8331C183632E4FF49D72BA29C222 /* Resources */ = { + 1147DB16E3F5FB56B4369E97CE4E2A8B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 24BABEA4B0ADFECCD28FAC14492BA293 /* Resources */ = { + 230F8331C183632E4FF49D72BA29C222 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2D66B49C37641F489074D41D6967877E /* Resources */ = { + 24A3B45481B8E1FF918C29B39809D374 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2E13D22C1091F1C29EF57EF64925FAAC /* Resources */ = { + 2B16B5AF463BB1870099480EB6FD36F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 3FC86B120724B5651A2181222CE36452 /* Resources */ = { + 36066CF8380260ECF64B3C1FEE5D3FCD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 3FE6BD24F8EC4E53E8CAB3C04F3A6884 /* Resources */ = { + 3CE8E709945F04EA519083496E5A33CB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - A6ACF3873DCAD3FCF1A773074ED922FC /* IQKeyboardManager.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 473D3E892ABB6C798CFF290644259B34 /* Resources */ = { + 3FC86B120724B5651A2181222CE36452 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 4778FC3DB14D5A3E60C4A373618ADE6E /* Resources */ = { + 3FE6BD24F8EC4E53E8CAB3C04F3A6884 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + A6ACF3873DCAD3FCF1A773074ED922FC /* IQKeyboardManager.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5FFECE28AF94686C940C2756A25FDC29 /* Resources */ = { + 42D674ABE6AD08652C5E458DBB2698C1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 6571FF59854C9ED976246EA41FEA37C1 /* Resources */ = { + 473D3E892ABB6C798CFF290644259B34 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 799C42C3FA07156B0F8924DF598E6FB0 /* Resources */ = { + 4C3D338583C3EE48DD468F6E79E96D81 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 82B8858A7AE704BF2EEEC76D241B26FF /* Resources */ = { + 5F9480E6B1D96F3172240E7464EB9C84 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7125FACA7E3B3A161F574A760F7AC549 /* region_proposal_text_detector_tflite_gray_quantized.bincfg in Resources */, + 70CC44E4CAB5C49E5B8BC3AF26245EFF /* rpn_lstm_engine_tflite_latin.bincfg in Resources */, + B0AB26436395AEC9556596DB2EDE4054 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite in Resources */, + 892E762FC95569CAC829C0F564BAF053 /* tflite_lstm_recognizer_latin_0.3.bincfg in Resources */, + C3EBE9B60104E0C3410E14FC1D6CC998 /* tflite_lstm_recognizer_latin_0.3.class_lst in Resources */, + 36D940EC947D91363C7DC908EB4B0DDE /* tflite_lstm_recognizer_latin_0.3.conv_model in Resources */, + 534D1F1F2179623DB69452A1880382A0 /* tflite_lstm_recognizer_latin_0.3.lstm_model in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 82DC41D207118A41874A7535EA32E514 /* Resources */ = { + 6571FF59854C9ED976246EA41FEA37C1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 888A2E430615987F208E1A0B7610045B /* Resources */ = { + 740FEB638107CD89474B57E09C9B187C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 90737FE1CA00FD453941D573FCCA38B3 /* Resources */ = { + 799C42C3FA07156B0F8924DF598E6FB0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 93339C3415F6DA4D178483BD0941DE7E /* Resources */ = { + 82DC41D207118A41874A7535EA32E514 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 9D5A3AC5C345F937592C2DD02BBABABD /* Resources */ = { + 888A2E430615987F208E1A0B7610045B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A216AEDC3CF83CB54AA7930C0F83EC1D /* Resources */ = { + 88B27A0D5014E1CD3CB6A3425B8A7789 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A9FEFD0F15A8FBB8B0F4705EFB417DC1 /* Resources */ = { + 93339C3415F6DA4D178483BD0941DE7E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B435747A9E2044277B17C612ADC9BE67 /* Resources */ = { + B8A52BBC430E79DADE527983111A56B6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C00987D8CBACED76C21B0FD8F7B1FBE9 /* Resources */ = { + C5AFB933E7D9BE1BDA716CDCFC8BF110 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C113FA4C0E2C4BD6DE06BF0B3D12D797 /* Resources */ = { + C8B2FC44CA544ED76B08D79901EC9F8E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4E9410B094BC013ED7A667E0FFF1FEF0 /* region_proposal_text_detector_tflite_gray_quantized.bincfg in Resources */, - 2E1924FDCB7F8E4DFE91EFBB10D1EB3E /* rpn_lstm_engine_tflite_latin.bincfg in Resources */, - 21D6AA139425D065D1444BA8B5463D59 /* rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite in Resources */, - DF2097F28D0F9536573AC954C93F388F /* tflite_lstm_recognizer_latin_0.3.bincfg in Resources */, - 0545726F6FC9072ED17EBAD8CEDE9A4C /* tflite_lstm_recognizer_latin_0.3.class_lst in Resources */, - 7EA83F0ABCC8E6DDC9CE99B48A20D6F2 /* tflite_lstm_recognizer_latin_0.3.conv_model in Resources */, - 42612C509955388150B148948FB6785A /* tflite_lstm_recognizer_latin_0.3.lstm_model in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C8B2FC44CA544ED76B08D79901EC9F8E /* Resources */ = { + D098F7F0080A87A1F472C81FC2F85528 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D098F7F0080A87A1F472C81FC2F85528 /* Resources */ = { + D344688685FD32137E21301E5E97E22F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D18B2B2B572517A27CC5824337A83A7C /* Resources */ = { + D87AA36A454E79F1256F043F03A5138D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - E051F8695B2721A88C551C35544867CC /* Resources */ = { + E3F2B9BF85C55A6FEDA457F570459F89 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - EC071BAA97BC24E4DDAF499DCBE48543 /* Resources */ = { + E6BF5B0440761109E971C166E97A150D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - EEEED43FE340704F1EEFFFD8C7B3B5E8 /* Resources */ = { + FB19778E1C3BF1CD4484F7B8ACA2F9DF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -5722,6 +6246,31 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 0CB26A72520F9D20BD2913A4D5FAAD61 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CF5B3BEABC61A78BD52EE8AD83B5A155 /* GoogleAPIClientForREST-dummy.m in Sources */, + 80E27C07272DAFACEABBEA57E0AF5104 /* GTLRBase64.m in Sources */, + 4E1EF3ED84E9AC863429156B3DEFF0DD /* GTLRBatchQuery.m in Sources */, + 95314A630DAAA84BCC1E3CF53F38D7DF /* GTLRBatchResult.m in Sources */, + 57EFD14577E9E111D2D6B61B1FB9FAF7 /* GTLRDateTime.m in Sources */, + F3FEE17B478040BAE4191D2A8C6A88F3 /* GTLRDuration.m in Sources */, + E297B1F3B314A115ECE813EF96A675FA /* GTLRErrorObject.m in Sources */, + 99E8F5AD2B58754951AFFF9B42270499 /* GTLRFramework.m in Sources */, + 93FB5E975E3A65DC24D965E0E489BCE2 /* GTLRObject.m in Sources */, + 0146E9E17FDC2E025919B65C4359F2F0 /* GTLRQuery.m in Sources */, + 6EA9592CD4E2019051756194BF6F3037 /* GTLRRuntimeCommon.m in Sources */, + F7ACA9F363D10081522C269822769427 /* GTLRService.m in Sources */, + 18CD29968DD1D60AA26B0087A17E8940 /* GTLRUploadParameters.m in Sources */, + 220AE9037C7A893181CA182AB19457CC /* GTLRURITemplate.m in Sources */, + 2EE9FC3AA23B7780270BD8D7AAC3D364 /* GTLRUtilities.m in Sources */, + 3B24C0260EDACE7F1BBFACABBBEEF372 /* GTLRVisionObjects.m in Sources */, + 0FAF96ADF0F8EFA295880E16B14659FF /* GTLRVisionQuery.m in Sources */, + C88CFDA4DDCCDF825667768AEA151FDC /* GTLRVisionService.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 1700C451C98D9DCECBEDFC5E351C5A9E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -5731,30 +6280,106 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 20DE3993C429955F6928E8DB7A3C9703 /* Sources */ = { + 1742095D0BD094A2250B67310CCB34AB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5F1C66A273B80FDC21DBBDED62DF13D0 /* FirebaseInstallations-dummy.m in Sources */, + 525B33535E653CA9F97CEC22B94949E8 /* FIRInstallations.m in Sources */, + 9FF286FA0B970B8406ED89238F08B1ED /* FIRInstallationsAPIService.m in Sources */, + 6DCEE914A5ABF757BC892EFB1341F3F0 /* FIRInstallationsAuthTokenResult.m in Sources */, + 2CBC9262A9FF96B6600DB28320A4FC25 /* FIRInstallationsErrorUtil.m in Sources */, + D6BCFB83B012FED414454471B4184B6B /* FIRInstallationsHTTPError.m in Sources */, + 0B833433CCD0C0AE0E001198038FA357 /* FIRInstallationsIDController.m in Sources */, + 69DD2898AD2A39988155F8426AC60BAF /* FIRInstallationsIIDStore.m in Sources */, + 6FE1C539E9B18AA438E6F3837670F80F /* FIRInstallationsIIDTokenStore.m in Sources */, + BCA3B1FCCE17DE10C20BFBBC03F97234 /* FIRInstallationsItem+RegisterInstallationAPI.m in Sources */, + 3C5558ED6C739F4EDEF8B4311F657FDD /* FIRInstallationsItem.m in Sources */, + 8C76436DCF9A6D66F765E541729B1C0C /* FIRInstallationsLogger.m in Sources */, + 02C865380BA1694194104DE95FAA3996 /* FIRInstallationsSingleOperationPromiseCache.m in Sources */, + D824E918EAA577CAF6019916BD441106 /* FIRInstallationsStore.m in Sources */, + 6F926DCBDF8229FEE3DC21373FC3F2F3 /* FIRInstallationsStoredAuthToken.m in Sources */, + 6140A912F64CB409082B5D83CA257EF0 /* FIRInstallationsStoredItem.m in Sources */, + 5F713AA0D3A798B1A8EADCD4D96508FB /* FIRInstallationsVersion.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 232CA0F1ED64530B6D46ACC9A7E39ADD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09BCDAA467F321AA902547810430D5AC /* FirebaseInstanceID-dummy.m in Sources */, + 394FA64A6725161CF93806AF3B134844 /* FIRInstanceID+Private.m in Sources */, + 4771D5EB98016E49C166EF50F17E86AF /* FIRInstanceID.m in Sources */, + 69CF075CE6A4EAACF25B0C6F86E29A9F /* FIRInstanceIDAPNSInfo.m in Sources */, + 78C84F42B7C5852DFEA49753D3892556 /* FIRInstanceIDAuthKeyChain.m in Sources */, + 3A7FC734EC2C4A129B6B4F4157901CE8 /* FIRInstanceIDAuthService.m in Sources */, + 21CEBE70AD0FDA0ABFB25F96B56EF0DC /* FIRInstanceIDBackupExcludedPlist.m in Sources */, + C1D4DB5E976ADF65600C3477AC5F1391 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */, + 5BAC3C57008EC96DC87B11EC73EBA062 /* FIRInstanceIDCheckinPreferences.m in Sources */, + E023D2E10A12CB666E84C1E3B37C41C9 /* FIRInstanceIDCheckinService.m in Sources */, + 739BD42FB732B584D4FDE997F46F880F /* FIRInstanceIDCheckinStore.m in Sources */, + F393384A866E251C61F7B670B70FB60E /* FIRInstanceIDCombinedHandler.m in Sources */, + F80F0E62A25B413755581CA5D93B0D0A /* FIRInstanceIDConstants.m in Sources */, + D795FF905303A22091AEEF450C15D3EC /* FIRInstanceIDKeychain.m in Sources */, + 68E7C42923468D28D3A4AAD72DD036E3 /* FIRInstanceIDLogger.m in Sources */, + FCF974862EDD9D9B487A61B85D4C89E7 /* FIRInstanceIDStore.m in Sources */, + 2060BB82E33F736340D4F3E16DC9314C /* FIRInstanceIDTokenDeleteOperation.m in Sources */, + D487446A8AF6F48B4FBF924EF1666298 /* FIRInstanceIDTokenFetchOperation.m in Sources */, + 05808F0E34F05B9919A9F64A8103EBEE /* FIRInstanceIDTokenInfo.m in Sources */, + A7974A9269835209CA8EAA2A139C63AB /* FIRInstanceIDTokenManager.m in Sources */, + 7808B943E8B9FCBAA5D3AE5FA7357120 /* FIRInstanceIDTokenOperation.m in Sources */, + 91EB2CCF13F0AC597561F7F77A771A43 /* FIRInstanceIDTokenStore.m in Sources */, + E81F5471991F75F0CFD61329288F4893 /* FIRInstanceIDURLQueryItem.m in Sources */, + 96737DE686E0CF06C96CF44075C1458B /* FIRInstanceIDUtilities.m in Sources */, + B3FD615AD1A38ABD7071E2BDF2DDDAC7 /* FIRInstanceIDVersionUtilities.m in Sources */, + BEDD3959A7B6E3ED428DF5D5100CB282 /* NSError+FIRInstanceID.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2578BF94F775DEBB24F062177A0B49F8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 24155DAD15E2E055B0DD797021E0274D /* FIRAnalyticsConfiguration.m in Sources */, + 7023ED3BD58FDA30AEB45891870B1D57 /* FIRApp.m in Sources */, + 47BF943A340B66C5FD02615D84FE0375 /* FIRAppAssociationRegistration.m in Sources */, + 0B12277C99C4A6D21425F304983DE9D4 /* FIRBundleUtil.m in Sources */, + 78C3E3E3EF833D9D523C43F986A19FD0 /* FIRComponent.m in Sources */, + ABCEBD2544608155DC10BD2E8D936027 /* FIRComponentContainer.m in Sources */, + 1553FE46218A4E2C73709CE942694AB5 /* FIRComponentType.m in Sources */, + 90283F10E5A2479476F7ACB241A26C1D /* FIRConfiguration.m in Sources */, + D6921CC170095AB7E7EA7DB5A8B6F7F6 /* FIRCoreDiagnosticsConnector.m in Sources */, + F01D0894A1574CC3064578C4CD9B7D0C /* FIRDependency.m in Sources */, + 7DC7CE22C8F7A5F5F218F4EDE7B0976F /* FIRDiagnosticsData.m in Sources */, + 935AF5A81540D3302EAA88E30C8CEAFB /* FirebaseCore-dummy.m in Sources */, + D2B876D421A0B0DCE80004FF1BDB6887 /* FIRErrors.m in Sources */, + 964238ADBDFA975C3756A8C0E06B4758 /* FIRHeartbeatInfo.m in Sources */, + A3924FFDB3825F2C3079A829F4BE8CAC /* FIRLogger.m in Sources */, + 90772D3E0A4156BC36CDDBCEBF9B4405 /* FIROptions.m in Sources */, + F29E890B3EA102C754D2358A7A976959 /* FIRVersion.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A631AACA4277AD0A10E844DF46ECD30 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3720F78D3C07C5D073DA18815F02F1DF /* FBLPromise+All.m in Sources */, - 976D60FEA2C0B5E4E689793424EFF28B /* FBLPromise+Always.m in Sources */, - 083602AE5791D228DF71333D3F0EFE10 /* FBLPromise+Any.m in Sources */, - B686ADAED878534373FE4CF28D3BED99 /* FBLPromise+Async.m in Sources */, - B8DA31D47AE7F1767544F0AB3BB52927 /* FBLPromise+Await.m in Sources */, - 3BB48E108BFA913311201A0452DBE8DB /* FBLPromise+Catch.m in Sources */, - D4128F8426F3B36CA54A919111B3F829 /* FBLPromise+Delay.m in Sources */, - CF0DA4B5612463DF0E22BFD8F0F5E21A /* FBLPromise+Do.m in Sources */, - A19E51C554048356F1452767813A7E17 /* FBLPromise+Race.m in Sources */, - 6A7C5C689624628C965B335AF05130EA /* FBLPromise+Recover.m in Sources */, - 1029A5AE36220B771A6EC27A95D3FEC3 /* FBLPromise+Reduce.m in Sources */, - D23E701CE0895EA28BCE2998C709127D /* FBLPromise+Retry.m in Sources */, - 66F022DE0D60BC1091DA0FDBEE86232D /* FBLPromise+Testing.m in Sources */, - 107F9A204934DFBB4189298EC835EF84 /* FBLPromise+Then.m in Sources */, - 80AF6E3CBF9AB2626980128D1D8A9614 /* FBLPromise+Timeout.m in Sources */, - 498E2052288D0AC61284AB67F55BF64D /* FBLPromise+Validate.m in Sources */, - 1EA32A28D91E5C703F7D857B5033DBC5 /* FBLPromise+Wrap.m in Sources */, - BB45427A314AC869056C004AF3F9D507 /* FBLPromise.m in Sources */, - 822459BA9E891984A1D4BC80CEF9B9A0 /* FBLPromiseError.m in Sources */, - 36618DDADB18BA4130475DEDAE2912C6 /* PromisesObjC-dummy.m in Sources */, + D5B44A8AACC863F0CA57FF2ECCB43BE0 /* GDTCORAssert.m in Sources */, + 4E9E84C07445FB6D6B88489016DDCA7A /* GDTCORClock.m in Sources */, + 382B8C71B2CDCE358FADD3B6A689C9C6 /* GDTCORConsoleLogger.m in Sources */, + BD9469D8B4137A22F381056FFD802523 /* GDTCORDataFuture.m in Sources */, + D7511454658DAAAEE4C550E993061BEB /* GDTCOREvent.m in Sources */, + F4DDF8178135C26AC1AB37DA22F32158 /* GDTCORFlatFileStorage.m in Sources */, + AECF17258641577728FB7D2FE5DD47C9 /* GDTCORLifecycle.m in Sources */, + 927A389CEE4DB476CD30B6814198B555 /* GDTCORPlatform.m in Sources */, + 5EEC93E3D577E2C5813BA8C23C886320 /* GDTCORReachability.m in Sources */, + C7CA081CD0C9ED51B11DF8D34D5BEAE4 /* GDTCORRegistrar.m in Sources */, + 2E86341B0DDD16517B40BE446D11F7C0 /* GDTCORTransformer.m in Sources */, + 44DDFCD7F5FA4268B33081A8EE8846FB /* GDTCORTransport.m in Sources */, + 18395BDD791C941B79289B97055D4B96 /* GDTCORUploadCoordinator.m in Sources */, + DC4E07A1FCF8554C38F24329C8E24E86 /* GDTCORUploadPackage.m in Sources */, + EFA1ACDBEE52F505EEFF32C6FE0FCD4D /* GoogleDataTransport-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5783,113 +6408,44 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 32D46587714EC1B57AD96A64114B7091 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2F7BC4D9B94686FACDEBDC48DFCE53BB /* FirebaseInstanceID-dummy.m in Sources */, - 0D1B9CD436404AF8CE9454F4267E2220 /* FIRInstanceID+Private.m in Sources */, - 226C0456943C7E43069A6588916D4894 /* FIRInstanceID.m in Sources */, - 9E30499B417D3FFDD2D41AE753A1CE0A /* FIRInstanceIDAPNSInfo.m in Sources */, - 868BE6E52BD3B8BE9A1719130327E4AA /* FIRInstanceIDAuthKeyChain.m in Sources */, - CF44CD5690A61D2637DF96F4924E36A1 /* FIRInstanceIDAuthService.m in Sources */, - 0E5DB0DFEF39DD6BD0740F924132785D /* FIRInstanceIDBackupExcludedPlist.m in Sources */, - 413EEA804A54552C016C37C60F8A41F1 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */, - 48648F221CE56857A5CF0BF6BA8A7A3A /* FIRInstanceIDCheckinPreferences.m in Sources */, - CF2F900BB347A231F7ECC7C146BE7D7E /* FIRInstanceIDCheckinService.m in Sources */, - 653562477C03866059BA00E471DB0493 /* FIRInstanceIDCheckinStore.m in Sources */, - 96D130BB7E025036B15EBDC6ED79CBE3 /* FIRInstanceIDCombinedHandler.m in Sources */, - 875C93BE25F8C410281B319C91934B2D /* FIRInstanceIDConstants.m in Sources */, - BF8138C6A247AC1F0FA75D23716C4517 /* FIRInstanceIDKeychain.m in Sources */, - CCB101C566D789AE584F8F7A0191DB73 /* FIRInstanceIDLogger.m in Sources */, - C160B69E04B434983B14E0026C1500AB /* FIRInstanceIDStore.m in Sources */, - B4DEDB84E9D36BA51BFE9B517A0F4432 /* FIRInstanceIDTokenDeleteOperation.m in Sources */, - FEB04CEC0231A752ADAC68FEC411F7AB /* FIRInstanceIDTokenFetchOperation.m in Sources */, - 0CD9B94BAA269FFC394D18DFB157189B /* FIRInstanceIDTokenInfo.m in Sources */, - 2317CD5B9D7E2EF8EE6194230ADE38F1 /* FIRInstanceIDTokenManager.m in Sources */, - CAF9ECE96CFD4BEFFAF05AF598701D28 /* FIRInstanceIDTokenOperation.m in Sources */, - D8C9AEE254765BF5A4ABED91137828AE /* FIRInstanceIDTokenStore.m in Sources */, - DBCE9D9BA975B0967C26A2CB77C22B8F /* FIRInstanceIDURLQueryItem.m in Sources */, - 42BEFF30EA110CB5406A74E7957CFD21 /* FIRInstanceIDUtilities.m in Sources */, - 54A10145C738BE7483001F28E39DFD58 /* FIRInstanceIDVersionUtilities.m in Sources */, - 20A96B2CFC96983B266CF772A170974C /* NSError+FIRInstanceID.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33B6243B148B7338184DA6875073D98F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 35DB17D4D6595A817DB0747B4B4D1BBF /* Sources */ = { + 4A8043435ACC7DC3ED56F7BF0FB913BA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - ED2B495F5EB6F67AE76E1F7FD78F3E36 /* GoogleAPIClientForREST-dummy.m in Sources */, - E0F9AB60B87FCDBB05D2EE7EB8E71D9C /* GTLRBase64.m in Sources */, - 6EC6F7921D06D08FE899E0F946BB0E5F /* GTLRBatchQuery.m in Sources */, - 1DC20AD9785C1E1B8FB62993BE04DE1A /* GTLRBatchResult.m in Sources */, - D4D6E86D29DBD0F0777C51FEC1796E55 /* GTLRDateTime.m in Sources */, - 20B09E04C79D4F3B570D3B33BEC6C916 /* GTLRDuration.m in Sources */, - 145EBF0214E02FCE0B4589491AA1771C /* GTLRErrorObject.m in Sources */, - 0B79C7AB763668A917AE7D4072F683C0 /* GTLRFramework.m in Sources */, - 612A8F55C99DA596C9F8496DA257B012 /* GTLRObject.m in Sources */, - 234341C16217B5D9C2949AFC6C7A2F03 /* GTLRQuery.m in Sources */, - 94C5F80E88C403348C6618C43EAC2AF3 /* GTLRRuntimeCommon.m in Sources */, - CE72E4DA2A9B025008730110D40E41FD /* GTLRService.m in Sources */, - 16A8E35133778310AC76A250222B00A9 /* GTLRUploadParameters.m in Sources */, - CD51083BE83E5086CAC454575BBE37BC /* GTLRURITemplate.m in Sources */, - BE07A266D9887FE3CF8DFE5CF6212BF3 /* GTLRUtilities.m in Sources */, - E65525DA5B9AA1BDF57FB4502B8B5658 /* GTLRVisionObjects.m in Sources */, - 7821A022F9F793A76132E794C031580C /* GTLRVisionQuery.m in Sources */, - 6B71975D2E6975280AE68A7891DEB7FB /* GTLRVisionService.m in Sources */, + 681BC01E33E24CF16F6FA5AC228937F6 /* FBLPromise+All.m in Sources */, + 5497B9799D27C289858F919164D6ABC7 /* FBLPromise+Always.m in Sources */, + F52D6806058EF796D8FBECF6F39B836C /* FBLPromise+Any.m in Sources */, + 36E0379A8E3694A90339F98340F57106 /* FBLPromise+Async.m in Sources */, + 1BA3F5AA1ACDA8E62989D9637D71CEBF /* FBLPromise+Await.m in Sources */, + A13C7A2B10A474C5F2B55A8757DCC4F9 /* FBLPromise+Catch.m in Sources */, + 9C06DC49C8F2006D0C9932C7C77D5060 /* FBLPromise+Delay.m in Sources */, + BA418C7C6D6A81D48129B087933C86BD /* FBLPromise+Do.m in Sources */, + 23986D7E138F668BDE449DD6749DA08A /* FBLPromise+Race.m in Sources */, + 0B38AE10F777F608B8C792D5B7B0750F /* FBLPromise+Recover.m in Sources */, + A7A63053E96D0B97E60516D58431E14B /* FBLPromise+Reduce.m in Sources */, + 0890788E6B5D2F26F7650194B7AB3385 /* FBLPromise+Retry.m in Sources */, + E01A0A2F39D9B03C024DEB586DC733AF /* FBLPromise+Testing.m in Sources */, + 1533CEF43E02B82A12E2329A2ECFC4D1 /* FBLPromise+Then.m in Sources */, + 87A9519A551BAE32CDD8F126D7DB519A /* FBLPromise+Timeout.m in Sources */, + 4CDE7D3FFF484D034AC659F9ABA90514 /* FBLPromise+Validate.m in Sources */, + 60B75FD53E4438231A831B4B2E8BCD82 /* FBLPromise+Wrap.m in Sources */, + C3083848EAFF62A3382B8C43E04BF8FA /* FBLPromise.m in Sources */, + 5FB1D0D1AF2CAC62D24247C13077617D /* FBLPromiseError.m in Sources */, + 03C64DD308C08E70198291C715EAB442 /* PromisesObjC-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3EB7342099D176448655231A305AFA8D /* Sources */ = { + 4F421029E15A055FF97B0C7286C10701 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 775F9BA89366D5622A12264F25E9AB78 /* GoogleUtilities-dummy.m in Sources */, - 56BBD6B8F523E88447DACDA4C3E6CCBB /* GULAppEnvironmentUtil.m in Sources */, - 4631FABF63459F2D6A823E0467C4F06D /* GULHeartbeatDateStorage.m in Sources */, - F55C26FF8A89E3034A2593164591981D /* GULLogger.m in Sources */, - 9021942EDFF218CA7FBF8F69247D30C6 /* GULSecureCoding.m in Sources */, - F68B0224AD0D1A4977EB84D29547F9C2 /* GULUserDefaults.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3F9427433AF6001EABAC4D76C8980959 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7738893BE87C5E15710AD4857D03BBA7 /* Any.pbobjc.m in Sources */, - 227A587F18D2EB37D6068160BFC71D4C /* Api.pbobjc.m in Sources */, - 016310D8559884F56F6CF6F6043A4B92 /* Duration.pbobjc.m in Sources */, - 55B0D49B7C29BF1B510FCC028455FFC1 /* Empty.pbobjc.m in Sources */, - 204A829CAF0B73F3E2C0024554397302 /* FieldMask.pbobjc.m in Sources */, - 5067A8093A760F578609986B47037759 /* GPBArray.m in Sources */, - 1D0C1F350F8ADCAC144EC211C47B6447 /* GPBCodedInputStream.m in Sources */, - 0F8FDBFA07DF60EA50C4EE08B584AD4C /* GPBCodedOutputStream.m in Sources */, - BD96FCBB3AB3409C0EAA81EA75C14410 /* GPBDescriptor.m in Sources */, - 79BCB62F13F1563F5614EC6C4ECAD98D /* GPBDictionary.m in Sources */, - 06D8B1337694AF87E5818A228FEF70CE /* GPBExtensionInternals.m in Sources */, - ADD5E8B391805446E98F20A4277A8D57 /* GPBExtensionRegistry.m in Sources */, - 4C53A2C8A8ABF6786B777D6F330207A8 /* GPBMessage.m in Sources */, - 6AD370225064F8C670E808A167FF6FE0 /* GPBRootObject.m in Sources */, - C6AAE5B5FFD75CF33D6DFE320543F838 /* GPBUnknownField.m in Sources */, - D08C6DD858FFC351EDB5C9FD1B33FB56 /* GPBUnknownFieldSet.m in Sources */, - ADF15DD51232A3192B6860568220BDC2 /* GPBUtilities.m in Sources */, - A8817AC7E55C8BC848117BB7C93E8A21 /* GPBWellKnownTypes.m in Sources */, - FD5B098DE7CD90DCAFF586704B4BFE25 /* GPBWireFormat.m in Sources */, - FD7B29E524570D1EF13AD09D1BE9986B /* Protobuf-dummy.m in Sources */, - DA58F75C8DC01C08F838D5DA440A79CD /* SourceContext.pbobjc.m in Sources */, - FEE0467DD419B3FE3F934B67BEB0F0A0 /* Struct.pbobjc.m in Sources */, - 8CDF91987B945089AA238EF8586B544C /* Timestamp.pbobjc.m in Sources */, - AAD4EFEA91F5A4B30F2A8512F4242A77 /* Type.pbobjc.m in Sources */, - 752463662AEBA00F5E034F906AA34455 /* Wrappers.pbobjc.m in Sources */, + 11657C23FA2ED4D3F5FFFA98DDA15578 /* cct.nanopb.c in Sources */, + 3EC26A1EDA7ABCFB1F11BC78460BBA64 /* GDTCCTCompressionHelper.m in Sources */, + 32F2EC043B60A54A07F310BE68EAA0F0 /* GDTCCTNanopbHelpers.m in Sources */, + 94B6E4F1587818BDE74C9F326BE8E806 /* GDTCCTPrioritizer.m in Sources */, + 431B2331FFB67F4673B2923EEDD71103 /* GDTCCTUploader.m in Sources */, + 0C714B462B98FCAD0DD45673A35EABE0 /* GDTCOREvent+GDTCCTSupport.m in Sources */, + 9FC7AC1DC13110EAF043982DAEE0C64F /* GoogleDataTransportCCTSupport-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5916,27 +6472,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 57B6E9DD79F5CEFBD1DEF7F4D9909376 /* Sources */ = { + 564318D87958404F65C28FFD852A69E9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5EC2FD08232A1C76BB756E57AF74917E /* FIRAnalyticsConfiguration.m in Sources */, - CFB4AE72AB4672EA965BE682D67A1D7A /* FIRApp.m in Sources */, - 11C7071DD0A286C6C5A36F3EA41FFEFE /* FIRAppAssociationRegistration.m in Sources */, - 92A794E9CD8937EA57310E2E08E7DC8B /* FIRBundleUtil.m in Sources */, - 5F797ABE4D4DE15301EA715AE43D4344 /* FIRComponent.m in Sources */, - E606137C8F38F160048A2835885FA251 /* FIRComponentContainer.m in Sources */, - 87EA2C172083507879B64A6EB62C3BBD /* FIRComponentType.m in Sources */, - A396F25162B95799B51DC01503A28753 /* FIRConfiguration.m in Sources */, - E8A739397C3F3DF9E832FCA099748274 /* FIRCoreDiagnosticsConnector.m in Sources */, - 2617A0734A4A66343B3389FD052166BC /* FIRDependency.m in Sources */, - D8940EBD6593E05C23DB5EECFFBBC70E /* FIRDiagnosticsData.m in Sources */, - FA15BC7AE37D6940A845A910AF843F10 /* FirebaseCore-dummy.m in Sources */, - 8486CCB140F42A4150A9F1D0ACBFE69B /* FIRErrors.m in Sources */, - C1CC47BAF761EC35B08B9B9A634728FC /* FIRHeartbeatInfo.m in Sources */, - 43FD3D8378A5146F0400A721417DD957 /* FIRLogger.m in Sources */, - 4A28FB203560B43FF91AD921D1F2EC3B /* FIROptions.m in Sources */, - 69738C850ACCEF2BEF52ADF0970E4FBE /* FIRVersion.m in Sources */, + FE878106DE7871B9AEA7F9B45A67E14C /* GoogleUtilities-dummy.m in Sources */, + 73805676A67E3E2B8041FA939A27A102 /* GULAppDelegateSwizzler.m in Sources */, + 12B8FEC319DDEBA7FC75F137F3E72783 /* GULAppEnvironmentUtil.m in Sources */, + 1A398322CF3DB5C86F83BCB5420E65D2 /* GULHeartbeatDateStorage.m in Sources */, + B9ACDF1DB5E69751026E08CA8B3B4B7D /* GULKeychainStorage.m in Sources */, + D7292715BF834E9055EE2B9D2D4596CE /* GULKeychainUtils.m in Sources */, + 34701A227A5E24978E7E7CDD8416B58A /* GULLogger.m in Sources */, + 9E707FD22D837E8B33A94CE9E90ADC1D /* GULMutableDictionary.m in Sources */, + D88F9854DACC023E7A6B115D62ECD39B /* GULNetwork.m in Sources */, + 3F5744B5A50ED0E541B2D56C4B3DEA0B /* GULNetworkConstants.m in Sources */, + 8B6698D463DFF193B10BD4DD643BC374 /* GULNetworkURLSession.m in Sources */, + 2DB671C735AF7060E0B883EDBEB71B20 /* GULNSData+zlib.m in Sources */, + BF6AD73A577D04EE74D38235F60180DC /* GULReachabilityChecker.m in Sources */, + 2CE736E6BAD133A6C1799C508AFA8F37 /* GULSceneDelegateSwizzler.m in Sources */, + 9E17A917A7529FB66C49B09C7F615A06 /* GULSecureCoding.m in Sources */, + 8F499B2A45C5DA77D7B8F4F6F8175BE9 /* GULSwizzler.m in Sources */, + 1A8190C55D6773905FB05512B6085D5B /* GULUserDefaults.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5965,23 +6521,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 782CBE6A72B17AF690F65A1EE54AAE32 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6A4D65C0A425129DED934CE1B683FBBB /* GoogleToolboxForMac-dummy.m in Sources */, - FAEAB016ABE8A2CFBDB5EA3AC1C80CC7 /* GTMLogger.m in Sources */, - 6A73F254A4CEE817CC7AB09331B63DCB /* GTMNSData+zlib.m in Sources */, - 13F5C593C8BD79E242F4418651F5318E /* GTMNSDictionary+URLArguments.m in Sources */, - E1D1AEADCE5B73A823813F51C257C952 /* GTMNSString+URLArguments.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8B7CB7B4CB70CFCDE100590FD0F2E36E /* Sources */ = { + 84462AFF83400C69E0749E548ED1F2ED /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 20B3DAE9BDDA18A787BBF099E0B25A0A /* Pods-FoodScan-dummy.m in Sources */, + 79BD1061C93EAF13755A217978F3E1C8 /* FIRCoreDiagnostics.m in Sources */, + E1F2658DAA485CCF7790465386E7E644 /* firebasecore.nanopb.c in Sources */, + AC5B87A4BE71F075BE8A947CADFD9D26 /* FirebaseCoreDiagnostics-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6027,213 +6573,197 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A4C63DEF277F25BEE9E8C5F03EB6E9B9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0992A1BDBD040ADA5968073AA9855225 /* FirebaseInstallations-dummy.m in Sources */, - 2DBE5C098BECE5DA4B7A642F1E864627 /* FIRInstallations.m in Sources */, - 24E75AB72ED487809CEF13E397A9C32F /* FIRInstallationsAPIService.m in Sources */, - CEDB6283EC6177F8D18258E0721B0DBC /* FIRInstallationsAuthTokenResult.m in Sources */, - 88DB5C287EF7255C59E8ED6F94287EC3 /* FIRInstallationsErrorUtil.m in Sources */, - 33587BC5DFF60774B0929EB85F5F26DD /* FIRInstallationsHTTPError.m in Sources */, - 25EA58A3482D787BCD0D7E2C5C22EF99 /* FIRInstallationsIDController.m in Sources */, - 9666BD92C0FA7D5E864AB9DAED01EB37 /* FIRInstallationsIIDStore.m in Sources */, - 492A10FAAA612142CFE9419D7D77BBAB /* FIRInstallationsIIDTokenStore.m in Sources */, - 9F9971373AF43BBB91B0E5ED0066D767 /* FIRInstallationsItem+RegisterInstallationAPI.m in Sources */, - FC2E1A31172F2A03B5EC5DCDD33C1376 /* FIRInstallationsItem.m in Sources */, - 526AC34F5C8DE45B154D88BF651D3278 /* FIRInstallationsKeychainUtils.m in Sources */, - 7A4F4A16371A9EBA93B23D9CD125DBBF /* FIRInstallationsLogger.m in Sources */, - 086BF6600BEDF76437948603EF96DD8D /* FIRInstallationsSingleOperationPromiseCache.m in Sources */, - A4A3D6EA6043E83DF4A8C9AA56C9A743 /* FIRInstallationsStore.m in Sources */, - 3D66E6E3212B36050F0890E770C21463 /* FIRInstallationsStoredAuthToken.m in Sources */, - DFC894E12890C4A8F5CB522F3A23E985 /* FIRInstallationsStoredItem.m in Sources */, - 3A38D297BC070D1BA76BC6B46B38E269 /* FIRInstallationsVersion.m in Sources */, - 23637386943368B27A7443AD7ECFB13A /* FIRSecureStorage.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A9EC93C7830E5073DE196B687E260971 /* Sources */ = { + 9EC816E3A3ECD1F4210B088FB507019D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6AB4B7DB37920D2647E4FCDEF47CEE6F /* FIRAEvent+Internal.m in Sources */, - A2131334A4773FF5A27BA28B2BEC7BAD /* FIRCLSAllocate.c in Sources */, - 11E71DCBFDAEF73504543CA1EA818A86 /* FIRCLSApplication.m in Sources */, - 26861832C3B4E432FBEF5214DBA89D47 /* FIRCLSApplicationIdentifierModel.m in Sources */, - 2E3437F0776A839EC10829E5AEAA7910 /* FIRCLSAsyncOperation.m in Sources */, - 7DEAE588111813D378725DB8FEA2481A /* FIRCLSBinaryImage.m in Sources */, - 04582B2778B6B4C16549DAE243C8C6C6 /* FIRCLSByteUtility.m in Sources */, - B8798FB961137A5987A58B57C00F1F50 /* FIRCLSCodeMapping.m in Sources */, - DCEF6DC4071B581E96C71A8A2FE6C9DF /* FIRCLSCompactUnwind.c in Sources */, - E6A8FCF7A86960C03A84306D65CE237A /* FIRCLSCompoundOperation.m in Sources */, - 608560AB0AE0E1B8E7D315696C4D9EBD /* FIRCLSConstants.m in Sources */, - C5B1F832B89684A3C5C63E7BE3F43A92 /* FIRCLSContext.m in Sources */, - C4B59D6C5045B15653C734891019ADAA /* FIRCLSCrashedMarkerFile.c in Sources */, - 5E191D43593086B72216075D011747AD /* FIRCLSDataCollectionArbiter.m in Sources */, - D8682B6F12C1CA9F9B7B638391629216 /* FIRCLSDataCollectionToken.m in Sources */, - 3902CD29F25D10AF7E45DB04997F5BE5 /* FIRCLSDataParsing.c in Sources */, - DB153CE54D1D74B8FE0D5F9CC7030E2E /* FIRCLSDemangleOperation.mm in Sources */, - 2024153FE5A7D224384DC6DF51526A0B /* FIRCLSDownloadAndSaveSettingsOperation.m in Sources */, - 95D7043EC3B7A07237016ACB5D53510F /* FIRCLSdSYM.m in Sources */, - D914F59F032740740507EC01F35EB4B0 /* FIRCLSDwarfExpressionMachine.c in Sources */, - 3BA0F19FA5649E347E2205DF90975279 /* FIRCLSDwarfUnwind.c in Sources */, - D4591E8EA28173EC6B86286E5BAB5BCD /* FIRCLSException.mm in Sources */, - 366D177891521442DCE130C538F00D53 /* FIRCLSExecutionIdentifierModel.m in Sources */, - 7E0C3D4D23286DA0DA142B0E44D19002 /* FIRCLSFABAsyncOperation.m in Sources */, - 49B672390775E6B266E2CD42D4966B48 /* FIRCLSFABHost.m in Sources */, - 6753F2E2C864409D4C86F492C2E53A34 /* FIRCLSFABNetworkClient.m in Sources */, - 93E467D4D73D433BD7EF93DC9D6B7DAB /* FIRCLSFCRAnalytics.m in Sources */, - CC84774020EB232FCE9261503FCC7CD3 /* FIRCLSFile.m in Sources */, - 369EB95CFE66A57B344DC228B02236D7 /* FIRCLSFileManager.m in Sources */, - C061CDD633140BB922A34746B6C45E53 /* FIRCLSHandler.m in Sources */, - 31087FFD7AA5D4E5B4D92E75428FBE73 /* FIRCLSHost.m in Sources */, - 04CDB6E6827EC300D7417BD71CA7CCA5 /* FIRCLSInstallIdentifierModel.m in Sources */, - 9C1144EA5EBD6328A15D30E58BBF4496 /* FIRCLSInternalLogging.c in Sources */, - F738DAB4D94A0FAAA0E3353822887290 /* FIRCLSInternalReport.m in Sources */, - 3054D9D333E45CD3D8C72F66F3220573 /* FIRCLSLogger.m in Sources */, - 5486E98C7C67AF908948396C0A5E3783 /* FIRCLSMachException.c in Sources */, - 8C293BFBB223F27F5DC11465FF4F6857 /* FIRCLSMachO.m in Sources */, - 7F5B6041BE2167DCA80ACC43596F4C10 /* FIRCLSMachOBinary.m in Sources */, - 82E187B1928213924FF6F676C611EAAC /* FIRCLSMachOSlice.m in Sources */, - 3A292C9EAB375966C8E355B0CBE14281 /* FIRCLSMultipartMimeStreamEncoder.m in Sources */, - 237FF242DE75CBB96B8FA460B1B68937 /* FIRCLSNetworkClient.m in Sources */, - EB0991B312742A64A3A1E9F57074FB97 /* FIRCLSNetworkOperation.m in Sources */, - 5D70B3511D13145C91476C90CEF3A211 /* FIRCLSNetworkResponseHandler.m in Sources */, - 2D92E1F063E8D6B58970A6B856A79E17 /* FIRCLSOnboardingOperation.m in Sources */, - D663777E6347BA4C48AEB66118880F62 /* FIRCLSPackageReportOperation.m in Sources */, - 8D2A718D7025A4204AAB40FB0F1BE46F /* FIRCLSProcess.c in Sources */, - B0793D53469C051D9F0903C61BFE09BA /* FIRCLSProcessReportOperation.m in Sources */, - 9B2533A06392F0CB41780EB612F606CA /* FIRCLSProfiling.c in Sources */, - 0C7B3E861C680589147249919F807A74 /* FIRCLSReport.m in Sources */, - 0FA70615E55EB98948B5805E4769FAC2 /* FIRCLSReportManager.m in Sources */, - EB8F8676720B5DE5DCF8485033DAC23A /* FIRCLSReportUploader.m in Sources */, - 361D79BE822E9C28C56853DEC9913810 /* FIRCLSSerializeSymbolicatedFramesOperation.m in Sources */, - 102602D5B541C3291E0CB3B3B5C53638 /* FIRCLSSettings.m in Sources */, - 0A6F805D18A234D9175ECD139EE256E3 /* FIRCLSSettingsOnboardingManager.m in Sources */, - 9E15273697EBEA54BEE795E6BA60C67F /* FIRCLSSignal.c in Sources */, - 18826A128F0EEEEE9571B2C1B9951ABB /* FIRCLSStackFrame.m in Sources */, - C18F147933F1687438934F7C579D5B08 /* FIRCLSSymbolicationOperation.m in Sources */, - 219A02FF93744C45AD8E7F9967C7FDE4 /* FIRCLSSymbolResolver.m in Sources */, - 901FFC7B0FA6BC3D163533A93CD0C5E7 /* FIRCLSThreadArrayOperation.m in Sources */, - 045283C43D78AFF336E9BB195C853305 /* FIRCLSThreadState.c in Sources */, - FA1FD22A262DF2DAA849E1E85902D83D /* FIRCLSUnwind.c in Sources */, - 22D64E61CC94A99D0979A1018542E280 /* FIRCLSUnwind_arm.c in Sources */, - CC34C3B11B59AFBD23A5DE261A05920F /* FIRCLSUnwind_x86.c in Sources */, - 62FF054BFDC9F3056446887A2FBCB59C /* FIRCLSURLBuilder.m in Sources */, - C4ED4FC9C0F1A30DCD53FBDD94E18FD8 /* FIRCLSURLSession.m in Sources */, - 17F6D5360F9133E1E38E50D07418E40E /* FIRCLSURLSessionConfiguration.m in Sources */, - DF48C057355BD5B0B1B90267987205AD /* FIRCLSURLSessionDataTask.m in Sources */, - 88D0314CEB33826D7BF73600418F66FB /* FIRCLSURLSessionDownloadTask.m in Sources */, - 76869689F7E595D0EDC681E23FE706F0 /* FIRCLSURLSessionTask.m in Sources */, - DD86E5B9076E40D7D614E5947BAAA2B4 /* FIRCLSURLSessionUploadTask.m in Sources */, - CAAB19ADF464322EB4B968AD73722FBF /* FIRCLSUserDefaults.m in Sources */, - 7E169ED4A74F2ADAFED9901CCEEBFFB7 /* FIRCLSUserLogging.m in Sources */, - CE5D26791A20611059F08D376C84C284 /* FIRCLSUtility.m in Sources */, - DB34C4EAB890E6FA1F06FD004DEDBCA3 /* FIRCLSUUID.m in Sources */, - 14E825F53E1646D064109800F678B545 /* FIRCrashlytics.m in Sources */, - 4E4C5979EE741E711EED84D47E832BA5 /* FirebaseCrashlytics-dummy.m in Sources */, + FBC275CAB0AAEC213A2C0AF7950272C0 /* GPBAny.pbobjc.m in Sources */, + 64E43854C41D4D0FEFC93D33FFB70B20 /* GPBApi.pbobjc.m in Sources */, + 61928690D9610038562C943308CB2CFC /* GPBArray.m in Sources */, + A764898FFD748FA354D0341FC915CA95 /* GPBCodedInputStream.m in Sources */, + 3C2E6ADD50B51D9598B6DA9C6C39E439 /* GPBCodedOutputStream.m in Sources */, + 7989254A0CA19646EBD77ECA97EA69CD /* GPBDescriptor.m in Sources */, + E285973C77EF908512CC4F27815FC96C /* GPBDictionary.m in Sources */, + 6E575E3A013C6F95D33A8ACEBA239B62 /* GPBDuration.pbobjc.m in Sources */, + EEF6FC2191D23B735C85F8FED38F04C0 /* GPBEmpty.pbobjc.m in Sources */, + 89368B569F49A14CA7608C65D11501D0 /* GPBExtensionInternals.m in Sources */, + EF13B4CD77C3132A4C3D08A250AE01CF /* GPBExtensionRegistry.m in Sources */, + 4402F35675D477FCAF0EF2DB9EE165B4 /* GPBFieldMask.pbobjc.m in Sources */, + 94C06216ED08CD7FB88C76743C9E4F62 /* GPBMessage.m in Sources */, + 1F9F9E3335952F02EAB58C60A25ED6D6 /* GPBRootObject.m in Sources */, + 6E16BDFA4FCA78EEBEFB942A038A9B79 /* GPBSourceContext.pbobjc.m in Sources */, + 204D11D4C5D094FF81A8E19F91F7632D /* GPBStruct.pbobjc.m in Sources */, + D2D77FFE959AF1AB64E2720C0D0DD369 /* GPBTimestamp.pbobjc.m in Sources */, + 6FC3A34D4DF098F5A3243F6E78CA7B8A /* GPBType.pbobjc.m in Sources */, + A438AFF3822AD218220EC9AA38479324 /* GPBUnknownField.m in Sources */, + A7BACE71AD702974F7D70CE61F23C1FA /* GPBUnknownFieldSet.m in Sources */, + AC55FAE9E941369EDFA135FD5EF4B3B7 /* GPBUtilities.m in Sources */, + 3D2004F9D004B29A53650F9BAB942823 /* GPBWellKnownTypes.m in Sources */, + 668E409696873F2C5B72B658D2F70A55 /* GPBWireFormat.m in Sources */, + FC37BB0D006FB847126E8F6E6ED950D1 /* GPBWrappers.pbobjc.m in Sources */, + DFB623D9D9386803C69E246865BE6AA9 /* Protobuf-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B32DCA4FEF58BDA175E422315F953A4F /* Sources */ = { + 9FDC14F8B84294B4D2AFD05F8241E7E9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5CBD5A6A43FA85237AB6B374D59A0DB8 /* GTMGatherInputStream.m in Sources */, - 548F9D5A135DBB94568112DA2C4C0A01 /* GTMMIMEDocument.m in Sources */, - 311EDBB935A520BCD1B61D0496E4AE18 /* GTMReadMonitorInputStream.m in Sources */, - 50F00319C4DF60021DBCE6264E68179D /* GTMSessionFetcher-dummy.m in Sources */, - A7D7797B0EF5AA3CB80C17393D330BAD /* GTMSessionFetcher.m in Sources */, - 5362DD88BC9AACB150B47C91ABBA5BF6 /* GTMSessionFetcherLogging.m in Sources */, - CFD9E9ED39EF2DCBFFC7A4497ACD4EB6 /* GTMSessionFetcherService.m in Sources */, - BD2C137053C32B89B47E6BB3BFCF739B /* GTMSessionUploadFetcher.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B8A0808788D29BA6DDD0494AF33823DA /* Sources */ = { + B1BFE211605667AA0C4EB9C20017D8ED /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 63A4C245901C7786BBA8EA6CCFC6084D /* GDTCORAssert.m in Sources */, - 11140CF278BF26D07619E22BA3F7080A /* GDTCORClock.m in Sources */, - E7B44036B46E33E63F9342DCACD797E1 /* GDTCORConsoleLogger.m in Sources */, - 009F46232FB5D65F0B60C14815856CB6 /* GDTCORDataFuture.m in Sources */, - 4AD35D41CD59019F247318208F90AE69 /* GDTCOREvent.m in Sources */, - A1ABAE59DFE235669D08A9A1C8A0F36C /* GDTCORLifecycle.m in Sources */, - 184D6152B4BB3A5A1549BC786FD6EA99 /* GDTCORPlatform.m in Sources */, - 90B823AEFD1ED5577DB61577B12D8FA2 /* GDTCORReachability.m in Sources */, - DCB1C30660BB0AB99588CEBD53824FCA /* GDTCORRegistrar.m in Sources */, - 358C1028662DD71BB708FBAA4E1F9B3E /* GDTCORStorage.m in Sources */, - CBC0251B91FB782E546434492F9A4D87 /* GDTCORStoredEvent.m in Sources */, - D9E239B2D23CF31A4733D5F30742F3C2 /* GDTCORTransformer.m in Sources */, - 829E25C2B13D47EDF4C455C2C5226662 /* GDTCORTransport.m in Sources */, - 3794B47AC3E56F166A8309F0B3F4FCD6 /* GDTCORUploadCoordinator.m in Sources */, - 9ACCC909B4D348856FF8BCFC6A26892D /* GDTCORUploadPackage.m in Sources */, - 8A8F296B76DE106441D3665D20370802 /* GoogleDataTransport-dummy.m in Sources */, + 4DB184232BDF1391528CE0CFEB1314F4 /* Constraint.swift in Sources */, + 35307066DE64A25E3ABD76EBC535A52D /* ConstraintAttributes.swift in Sources */, + 0289E022CBD2E9108C18F25394811F7F /* ConstraintConfig.swift in Sources */, + 2A91120E25BC365C4CFED26AAB4392D0 /* ConstraintConstantTarget.swift in Sources */, + 546A53175202A6A71AFEC07250C8D859 /* ConstraintDescription.swift in Sources */, + 7E86917B2BA5EAD4F531D0CD71ACFB73 /* ConstraintDSL.swift in Sources */, + A2DBE42806EEFE43D250B350A1A55E9D /* ConstraintInsets.swift in Sources */, + 3DD1D7373E803DEF58DBF52021E28D65 /* ConstraintInsetTarget.swift in Sources */, + D443A31D9016E766E0FD2896FC979E76 /* ConstraintItem.swift in Sources */, + 1F268AF886447A531E618BC7F9A26614 /* ConstraintLayoutGuide+Extensions.swift in Sources */, + 8FF3103B0905585E894AD5DD5465FCC0 /* ConstraintLayoutGuide.swift in Sources */, + 6C4189911CDEABF99074D652F1192651 /* ConstraintLayoutGuideDSL.swift in Sources */, + 6EFF083ACF5AF5126E7CDD2CB004D8A0 /* ConstraintLayoutSupport.swift in Sources */, + 997E5473C846F0A7F1A2372C1BAC440C /* ConstraintLayoutSupportDSL.swift in Sources */, + 1B00BC30171A405432AD16BF6E22E14C /* ConstraintMaker.swift in Sources */, + 08CDBEC63CC1660C83F93E2048745828 /* ConstraintMakerEditable.swift in Sources */, + 2AA7C84FA3B943E1B8338DA7E3E08299 /* ConstraintMakerExtendable.swift in Sources */, + 1DC0892840D7988C87A0DBBECE478501 /* ConstraintMakerFinalizable.swift in Sources */, + C229DE228EE5078C900D35B8EF0EC77B /* ConstraintMakerPriortizable.swift in Sources */, + 5BB4975550854EBEC1CCE501D9CA5CF6 /* ConstraintMakerRelatable.swift in Sources */, + DEDCC2CFC02D74737C8E65CE557733BF /* ConstraintMultiplierTarget.swift in Sources */, + AD6F6743EA3BA867185AD3B9A4B3E3A3 /* ConstraintOffsetTarget.swift in Sources */, + CD7587867135543B396F0CAE939209E9 /* ConstraintPriority.swift in Sources */, + 7BF7C6AECBF2FDD304B8A6B437E64CD9 /* ConstraintPriorityTarget.swift in Sources */, + C6CA9C3394CC50429510AF279E53DF2E /* ConstraintRelatableTarget.swift in Sources */, + 9CBBD2A506FAEF88F1C31C39B2C9A09B /* ConstraintRelation.swift in Sources */, + B074FA9220AC97C030DC11B0F59127CC /* ConstraintView+Extensions.swift in Sources */, + 706BDA7256DC5F99158DBB48AD6C7C01 /* ConstraintView.swift in Sources */, + 5D71CF513C675B45B916C8B87995AEF4 /* ConstraintViewDSL.swift in Sources */, + C4604FC2B52647F57DDDF14A29061CBD /* Debugging.swift in Sources */, + CA3732E22DBF8C8EFC6407E5909D5627 /* LayoutConstraint.swift in Sources */, + D4AA345F090009761384AC97D2012E49 /* LayoutConstraintItem.swift in Sources */, + BD18E555590B5C94F9833727B479DC92 /* SnapKit-dummy.m in Sources */, + C0BA98C9CF9FF2D48A101F8732ACCF5F /* Typealiases.swift in Sources */, + 53E7EF3636402FA4FB068C376A9A2F6D /* UILayoutSupport+Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BE1409F87BD513DBEC4F590379C401C8 /* Sources */ = { + B497D8B3F8B0674C62A8919B5A29CCB2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C24CFF893AD4A23641E1EFAB25D608BE /* nanopb-dummy.m in Sources */, - D988BA80A6FCFF5954B8AABAE210508E /* pb_common.c in Sources */, - 161378C7AEDEB49CC41F270739EE5DCC /* pb_decode.c in Sources */, - CFF3D0C769DF8EC9FCF50AFAAC6EB43D /* pb_encode.c in Sources */, + CC300B26BA03B2101A6B62541D38BFB3 /* GoogleToolboxForMac-dummy.m in Sources */, + F0907D03F30B051651224FE9CFA735B9 /* GTMLogger.m in Sources */, + E6DA21E390643E79FDBC52DD86163023 /* GTMNSData+zlib.m in Sources */, + 8B7010FE699E439C829FE5983843C41B /* GTMNSDictionary+URLArguments.m in Sources */, + 5A186BD2B524F1E9EE67C4C8FCA4B3BE /* GTMNSString+URLArguments.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D66E68C856271BD40666350A200958E6 /* Sources */ = { + BB4101FF9F8777A789994C6AF6440267 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 487D8A6C9791E23B47DB4273903B2ABE /* FIRCoreDiagnostics.m in Sources */, - 6CDEBF430666E2C56B0FF06C9CE62435 /* firebasecore.nanopb.c in Sources */, - AF412E1718C13CD971400477521C51C9 /* FirebaseCoreDiagnostics-dummy.m in Sources */, + 608E912DE53DBA2847D4D246B451B3A8 /* nanopb-dummy.m in Sources */, + C66E0576E39A2AE8225782678B2FB3CA /* pb_common.c in Sources */, + CD9C66DE09B1F2533AE1BF66F8153F45 /* pb_decode.c in Sources */, + 53BD537AC1049761C500810FE3738F39 /* pb_encode.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DB126AE23CD37074BE52B6F65D7F3CC1 /* Sources */ = { + C6F84DA2C48197CD26668B2D2DCA8F2E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7F4CCF950DF3D64C2876539A07265C01 /* Constraint.swift in Sources */, - CE496F1D5A82AE2B965D07CF00B5F1E1 /* ConstraintAttributes.swift in Sources */, - 7E870DD4BC1FCF4EDA964F088008F1B7 /* ConstraintConfig.swift in Sources */, - B6535DC89767409D837516A0180BD67D /* ConstraintConstantTarget.swift in Sources */, - 7FD0044D172A24D614E8B03DB1CD8CCC /* ConstraintDescription.swift in Sources */, - FA09532034CF2DF139BEC5C808F43374 /* ConstraintDSL.swift in Sources */, - 09A0A8BA1D62E82B6429B472394468F2 /* ConstraintInsets.swift in Sources */, - 7F4358B1269E3432C4AB1BC6219CC7DF /* ConstraintInsetTarget.swift in Sources */, - 00935474E6E657660FB2CA10150BBAD9 /* ConstraintItem.swift in Sources */, - 5750D7EE79C60BA1522976E970479A14 /* ConstraintLayoutGuide+Extensions.swift in Sources */, - 06B8CB428852C2413F51E6F2601D5FB2 /* ConstraintLayoutGuide.swift in Sources */, - BB7E665623FFD5539297A787C0577B9D /* ConstraintLayoutGuideDSL.swift in Sources */, - 84A3DDEB61A691D25E2B75BB3C2D0C8C /* ConstraintLayoutSupport.swift in Sources */, - F29CC3BC88872777F6AB50FF82F01FCB /* ConstraintLayoutSupportDSL.swift in Sources */, - 833C3A678F4937440B73B4D2E34D969C /* ConstraintMaker.swift in Sources */, - FA8270CD18FD9151B26C402A2EB2E15D /* ConstraintMakerEditable.swift in Sources */, - B0C40C97BF1C65AE8ED7104C5AA3F3DD /* ConstraintMakerExtendable.swift in Sources */, - 9253B6F1F47FF8747C457BCE42741BEF /* ConstraintMakerFinalizable.swift in Sources */, - 841EA5A1F23C9EF7C43E30BBF1F56E06 /* ConstraintMakerPriortizable.swift in Sources */, - 76CA0BA5372C2EF79F313DA0843F50B9 /* ConstraintMakerRelatable.swift in Sources */, - AC11F531C82C508BC0CF2D8001081A7D /* ConstraintMultiplierTarget.swift in Sources */, - 4CCDC6C99FB4FA6F23E891231599200F /* ConstraintOffsetTarget.swift in Sources */, - 8DDF6C40868BB4515D65D7D34D010361 /* ConstraintPriority.swift in Sources */, - 1EE2C4E49FCCACF873F45B2CDD75270C /* ConstraintPriorityTarget.swift in Sources */, - B5E7C9F0298866C27C5E22B952D56124 /* ConstraintRelatableTarget.swift in Sources */, - 34955DF300DC3AAD92B270D1D9645B78 /* ConstraintRelation.swift in Sources */, - 11D4DC832910E871B85A365B47F2CF09 /* ConstraintView+Extensions.swift in Sources */, - 6CC4D20C8D41CF711A54799DC6F7482D /* ConstraintView.swift in Sources */, - 7099C25B55D00A15E78F003DEC73F04B /* ConstraintViewDSL.swift in Sources */, - 05630D19F31D62985AD9AE58586FA0D3 /* Debugging.swift in Sources */, - F6DE4FE44E583E21465F9C962F00AF24 /* LayoutConstraint.swift in Sources */, - 930DA4298659166216DFD5AEED64A8D4 /* LayoutConstraintItem.swift in Sources */, - CF8CDBB2A52937BC13EE558A9ECEAB7D /* SnapKit-dummy.m in Sources */, - 909D7B410B78CD55FD7F11E56DDC746D /* Typealiases.swift in Sources */, - DA3C4A3776456333618A5B29E2E912FA /* UILayoutSupport+Extensions.swift in Sources */, + 0D11973942815022ABB3C1BB1B584B73 /* crashlytics.nanopb.c in Sources */, + 1D1ACF7CF9F10D26E12C3D78EE697173 /* FIRAEvent+Internal.m in Sources */, + 9871706677F9DBC01165A82680064B66 /* FIRCLSAllocate.c in Sources */, + 49CA49EA26ECDC52606A0ED7B547D834 /* FIRCLSApplication.m in Sources */, + 0EB97AEF6C686972C71AE7F66077FB8F /* FIRCLSApplicationIdentifierModel.m in Sources */, + 0BEE43C336DF6BBC8BF6FFE7C6A7490C /* FIRCLSAsyncOperation.m in Sources */, + 4700FFC8A8DF084E47E31E904454F462 /* FIRCLSBinaryImage.m in Sources */, + 4E8110EFB424A91C4D0AD2D8C9D26360 /* FIRCLSByteUtility.m in Sources */, + BC44FF745D55FDD2C3CEE77A9DC14B44 /* FIRCLSCodeMapping.m in Sources */, + 5D5C5C1630EEEC475390F6FA5D7178E3 /* FIRCLSCompactUnwind.c in Sources */, + 643B1F64D6D7A23440850F797AE63A74 /* FIRCLSCompoundOperation.m in Sources */, + 714A3F034033DC1FA04E480875010012 /* FIRCLSConstants.m in Sources */, + 90779A60B544C9AA1E3B7C85DF85E8B2 /* FIRCLSContext.m in Sources */, + C6561CB12BC128F225DE70C4E1C27143 /* FIRCLSCrashedMarkerFile.c in Sources */, + 6BD5F6BF29BBE8F49BFD4C562E058024 /* FIRCLSDataCollectionArbiter.m in Sources */, + DE1D814B6C1D1D75972ACC1A6C3E5010 /* FIRCLSDataCollectionToken.m in Sources */, + A8C871899F00C949883305D95127D17B /* FIRCLSDataParsing.c in Sources */, + 8E1C27AE068AB24A24FD96AB182A0768 /* FIRCLSDemangleOperation.mm in Sources */, + 2CD5C001BD61432D4374DBCE9337674F /* FIRCLSDownloadAndSaveSettingsOperation.m in Sources */, + B24BAB76B23E5B2FBCCAEF0A70B9D173 /* FIRCLSdSYM.m in Sources */, + E723188243DEB68709069B947FE4F26E /* FIRCLSDwarfExpressionMachine.c in Sources */, + 268153EBDC291FF50FF99E76D8463A43 /* FIRCLSDwarfUnwind.c in Sources */, + B24AC664E3CD8E3CE99820F8D9EDD590 /* FIRCLSException.mm in Sources */, + FE0B428A4C7D19D5DF782E57333CF854 /* FIRCLSExecutionIdentifierModel.m in Sources */, + 585C9B579AC2DD56AC8B2D51341EAF93 /* FIRCLSFABAsyncOperation.m in Sources */, + 58966E19EC83CE24529CDEDCCC60B9FE /* FIRCLSFABHost.m in Sources */, + F95E9DC0BCE7645A0AFA6A30498C914C /* FIRCLSFABNetworkClient.m in Sources */, + 0E49185283CD5FEFDE1C1083C8043ABA /* FIRCLSFCRAnalytics.m in Sources */, + 9133BCB79AE47075A8033146775B5655 /* FIRCLSFile.m in Sources */, + 002BA96B45D77ECDE570F473309E036E /* FIRCLSFileManager.m in Sources */, + 5415CEA521D1519DBB8564AC6517824C /* FIRCLSHandler.m in Sources */, + A0B7C78520E084BF74056774DD68190A /* FIRCLSHost.m in Sources */, + D28AA876629A2272E90A50A6AFCFD6C9 /* FIRCLSInstallIdentifierModel.m in Sources */, + 94A568E571BB168B351847BA0139E28D /* FIRCLSInternalLogging.c in Sources */, + 2A2C42EB29985AA9FAF9B780901729C7 /* FIRCLSInternalReport.m in Sources */, + 1A9F88EFB21376BA51D4D1A9A8B105C0 /* FIRCLSLogger.m in Sources */, + D7B8B1EF062E4F14C35A33FF1BD304D0 /* FIRCLSMachException.c in Sources */, + 9573DD26C30759D093E094F190432DCE /* FIRCLSMachO.m in Sources */, + 5372F88BBC2DE83D0C48522EC697F2EA /* FIRCLSMachOBinary.m in Sources */, + 659C8116B942791ED8FB7E3448A6BAC4 /* FIRCLSMachOSlice.m in Sources */, + B50F3505AA0550A7DC2F15572F672688 /* FIRCLSMultipartMimeStreamEncoder.m in Sources */, + D90E5DE52B31D5A43239E15E9751AA8B /* FIRCLSNetworkClient.m in Sources */, + C379AFED67427E56DFBD53A6813BD3E8 /* FIRCLSNetworkOperation.m in Sources */, + A599F640519D3964E617484B60B5E386 /* FIRCLSNetworkResponseHandler.m in Sources */, + D1610AF1889CB1F775C95A395898E794 /* FIRCLSOnboardingOperation.m in Sources */, + D1D05014D2A200C40001936795D15398 /* FIRCLSPackageReportOperation.m in Sources */, + A9BB7D80574B8EA9D154BC4E62C9005C /* FIRCLSProcess.c in Sources */, + D5C2BF20FBFAD8D89BDC7615190DFDAF /* FIRCLSProcessReportOperation.m in Sources */, + 9E30F3E02C11EF2629AE0B9E7D139D3A /* FIRCLSProfiling.c in Sources */, + BA8BDC327CB859DA79F1AC47882B9565 /* FIRCLSRecordApplication.m in Sources */, + 657FFF9B2178C7045030AC6DFA2B9E39 /* FIRCLSRecordBase.m in Sources */, + 4EE60330F3867EC5799F5445A9242F5F /* FIRCLSRecordHost.m in Sources */, + 3B9B4E370E9E140BA7CB0EFE103F4BC7 /* FIRCLSRecordIdentity.m in Sources */, + E874B19ACA61EFEBFCA8BA25E3DA5EBA /* FIRCLSReport.m in Sources */, + BE878741116B4AA08F5CAD186E3A2D28 /* FIRCLSReportAdapter.m in Sources */, + 5F15D198F4C8761D8183143C079DBAD5 /* FIRCLSReportManager.m in Sources */, + 7126D283FD63F59771E36B7DC3996AE7 /* FIRCLSReportUploader.m in Sources */, + F2C7293784A2E3CB6419DBDA5B819CFB /* FIRCLSSerializeSymbolicatedFramesOperation.m in Sources */, + FF234DF7525C442EB98CA2B61AB1F313 /* FIRCLSSettings.m in Sources */, + 31E4BB41AC9A35A473793615A1A42C41 /* FIRCLSSettingsOnboardingManager.m in Sources */, + 127BCDC251EA4482DA1146124EF74EF8 /* FIRCLSSignal.c in Sources */, + CB1A37F9C7ACD14F03DC2406267F7B25 /* FIRCLSSymbolicationOperation.m in Sources */, + 4191877AC1736CC459FC11EF8E61FED3 /* FIRCLSSymbolResolver.m in Sources */, + BDA3559C41497AA1369C31E0ECCEFC08 /* FIRCLSThreadArrayOperation.m in Sources */, + 916433453A62D8B28D64D39A72B7AC0A /* FIRCLSThreadState.c in Sources */, + 757AE00976EF3E1699B1C975300B1AE4 /* FIRCLSUnwind.c in Sources */, + CD5EB588A9A9D0DF9E2FFB6BACB0B983 /* FIRCLSUnwind_arm.c in Sources */, + 2C1E6D77213F75BEE7F23DB106C9C5DC /* FIRCLSUnwind_x86.c in Sources */, + 7530926AA7B19D0F0380ED5ABB398DB3 /* FIRCLSURLBuilder.m in Sources */, + 54983E94AB81FE1A434164C157185B61 /* FIRCLSURLSession.m in Sources */, + 015CAE1AF64236E90B6AF8204CE6B24B /* FIRCLSURLSessionConfiguration.m in Sources */, + A2AFCD2E8E0E1037605A01E4E2CA5631 /* FIRCLSURLSessionDataTask.m in Sources */, + F5E8BA894A6A7208A1D9F437177C29C8 /* FIRCLSURLSessionDownloadTask.m in Sources */, + E949CF1F3697311D84BEA77375EF1DD8 /* FIRCLSURLSessionTask.m in Sources */, + 805DB1FB7F0AC4E0F311899EA6E00EF4 /* FIRCLSURLSessionUploadTask.m in Sources */, + B2144C79FE5BF6918B51092FFD6DD2E2 /* FIRCLSUserDefaults.m in Sources */, + CAACD330A6E3CDAA15BB2FF229D5F723 /* FIRCLSUserLogging.m in Sources */, + 2E8F11B81FEA854FCD2D9026A44C26EB /* FIRCLSUtility.m in Sources */, + 556EA2BE9668C9E20A16A7FF4288C398 /* FIRCLSUUID.m in Sources */, + 2C55FBF27252FFC62355D427AAD554BD /* FIRCrashlytics.m in Sources */, + F556B1B865EB6543B07AD9B9BEF4541C /* FirebaseCrashlytics-dummy.m in Sources */, + 58BE8FD91BFFD2ABE4B27060BB4C28EE /* FIRExceptionModel.m in Sources */, + FDDD09E24884675F1F5FCF3ED2D3D43F /* FIRStackFrame.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6245,16 +6775,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E86F6BE74008728E570AA8466C54402F /* Sources */ = { + E928FE642F44DBF6F47013A262620603 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CD00F2CD56167D3B83E974884CCCC425 /* cct.nanopb.c in Sources */, - 68391AC980C6E5AF090EA95C5DF23476 /* GDTCCTCompressionHelper.m in Sources */, - 9965A32C030DB9F397755027037CC135 /* GDTCCTNanopbHelpers.m in Sources */, - 4B702889DA1072CFE8C4362934ACD06C /* GDTCCTPrioritizer.m in Sources */, - 613237BD72C655AEDAB70891962ACB93 /* GDTCCTUploader.m in Sources */, - DAC2CB27E6CF62B8A68487020FE036C8 /* GoogleDataTransportCCTSupport-dummy.m in Sources */, + 6AC472E7953C193ED35753CDD2A38D2C /* GTMGatherInputStream.m in Sources */, + D1C4C71A280F0C16B45DC42AB3B1CE3F /* GTMMIMEDocument.m in Sources */, + DB19EFFE6E7ACD31D0A6A0391A85000E /* GTMReadMonitorInputStream.m in Sources */, + B9E81A12FDB167D79BA19105619E3F3E /* GTMSessionFetcher-dummy.m in Sources */, + 7F0104FC8CA9DD5BFCDCD352A488DD77 /* GTMSessionFetcher.m in Sources */, + B863578CCA37F3F02503B9612D406327 /* GTMSessionFetcherLogging.m in Sources */, + 619FFF19097FC0337638B69ACD9C7C01 /* GTMSessionFetcherService.m in Sources */, + 1771AD910ED7F5E42B4E0F840572274C /* GTMSessionUploadFetcher.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6292,518 +6824,509 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FFF6A6C7DAE2CC938393D8ECADBAC578 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F15854E5304CF0E18D33829FAA0D9F7C /* Pods-FoodScan-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0541EB09F37A7209497C2011D03E46F7 /* PBXTargetDependency */ = { + 01D640685E3D2AFA4C0C943D8E358E57 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseInstallations; - target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; - targetProxy = 59C402EE8D03972981B6B01975CF9178 /* PBXContainerItemProxy */; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = 5D87BAF2FE1AE1C1B5BBC05A846FA5BD /* PBXContainerItemProxy */; }; - 0C6F286EA1308548FC7C8F3FFDBC4EC4 /* PBXTargetDependency */ = { + 042CC70897384EDFFE27232377CD9B8E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromisesObjC; - target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; - targetProxy = 9F46BA6B1CF64CD5211FE8F19EF51F14 /* PBXContainerItemProxy */; + name = GoogleToolboxForMac; + target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; + targetProxy = 070BD1EA3A201A42B38BA91A771FDC93 /* PBXContainerItemProxy */; }; - 1191F68A79238FBD2728C71F03BF4567 /* PBXTargetDependency */ = { + 07185917B0DF8D42E3450862A9332DDF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleUtilities; target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 2A38F2982E393C55202157CD82231C3D /* PBXContainerItemProxy */; + targetProxy = 863D55FFD382195801277300930B6F62 /* PBXContainerItemProxy */; }; - 13B72D8EB7254390A3D35B338DCB83B2 /* PBXTargetDependency */ = { + 08D2EA44C1F723D9F96D728CAC968F65 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SnapKit; - target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; - targetProxy = 6CD783A3BC63773E4F906C65081CB5B0 /* PBXContainerItemProxy */; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = D275BEE1203CFC897423A6175BA497D1 /* PBXContainerItemProxy */; }; - 16683F6CF9882238ED2A92380A91FD13 /* PBXTargetDependency */ = { + 119730CC2E214B418F605B042525542F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseMLVision; - target = 0197D7CB5341EE949E9B8A3B937F2DB3 /* FirebaseMLVision */; - targetProxy = 3C593EEF02CC8EAEAC35177B77A00E74 /* PBXContainerItemProxy */; + name = IQKeyboardManagerSwift; + target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; + targetProxy = 63DFB5D59E133771A23BB12BB033E4AF /* PBXContainerItemProxy */; }; - 1CDA73B1ACF480C828FD440FCEE6C928 /* PBXTargetDependency */ = { + 14175F7BBA77A0958BCF1388AB4F4FD1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseMLVision; target = 0197D7CB5341EE949E9B8A3B937F2DB3 /* FirebaseMLVision */; - targetProxy = DA9403377D4D7F887F4878438AA4F4EA /* PBXContainerItemProxy */; + targetProxy = 316832C5958073176F27388A92627818 /* PBXContainerItemProxy */; }; - 23D5743774E19860D6D8C8DEECE34497 /* PBXTargetDependency */ = { + 1A379535ADA640DF69E8CA8AF297ABAC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Cosmos; - target = 00F31BD5217A20974B5E9AAC6256D98E /* Cosmos */; - targetProxy = D41A5B966A969AD3BC6EDB2B3539513B /* PBXContainerItemProxy */; + name = GoogleDataTransportCCTSupport; + target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; + targetProxy = CBEC3131E97D3A7BA2085F9E5CCEBD57 /* PBXContainerItemProxy */; }; - 2489397044071C156F5DC3B67DFAE485 /* PBXTargetDependency */ = { + 1CD4060229CAA0B9C96BADE608102557 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleUtilities; - target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = C8FEF11E54617DB2985227CB25239D3D /* PBXContainerItemProxy */; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = ADA8B92C9CF8D3CCFF76135A6818A177 /* PBXContainerItemProxy */; }; - 25C1DB02F1147FF090205433115A87FB /* PBXTargetDependency */ = { + 2147D6F4F55D69AE27905A6ABB5E4EF2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleToolboxForMac; + target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; + targetProxy = D46C17199B3CF18DDA8FE64CACE46D7C /* PBXContainerItemProxy */; + }; + 21C519D3CBB53D3F3A971F4107325752 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseMLVisionTextModel; + target = 7ABC58EF037E8B5BE0CD776D0D629DE6 /* FirebaseMLVisionTextModel */; + targetProxy = A103C87A482308AC8559B87013CD68DC /* PBXContainerItemProxy */; + }; + 235FCD9EDB12E91837EBA14158033E90 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAnalytics; + target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; + targetProxy = BC7661A6D82BD072FCAAC64777166132 /* PBXContainerItemProxy */; + }; + 25EA346FA56B14749E0BE3539BA8C565 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources"; target = 5EC12DD71E5A7D44401B62506C027F8C /* FirebaseMLVisionTextModel-GoogleMVTextDetectorResources */; - targetProxy = 083F29496525DD84974B758FC83A45C0 /* PBXContainerItemProxy */; + targetProxy = 631428240B0D3438166394FFE26DBB5F /* PBXContainerItemProxy */; }; - 262146E74B6288CE938F63EAC1611BB9 /* PBXTargetDependency */ = { + 279D340FEF1B7D6567E1E36927D9B08A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleUtilities; - target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 763977238F1F6BE3382AB4BC67A8BB0C /* PBXContainerItemProxy */; + name = PromisesObjC; + target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; + targetProxy = FD4AA03875C3D987A373A74CB4030EC5 /* PBXContainerItemProxy */; }; - 2857774EADCA851F076F4A79FA1962D4 /* PBXTargetDependency */ = { + 29060A66FFC64B4ECC3054E7B1480B69 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseInstallations; - target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; - targetProxy = 8B82112614AA4AECF1B81DDB157D7F62 /* PBXContainerItemProxy */; + name = Popover; + target = 89ADB0D61D0BE9648E9853F5F8BDA717 /* Popover */; + targetProxy = AECFB49B0FAB46A9DC41D18C2D258C49 /* PBXContainerItemProxy */; }; - 2D190813E2E43F2D00070B18BB2C8C10 /* PBXTargetDependency */ = { + 2A441EAA3268B3CE4F9EC7EF3CB6FB26 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Protobuf; - target = 470FE31978DC918618A329D8B55C85FF /* Protobuf */; - targetProxy = 02F730E15C2732B4D481A0F447F79D2B /* PBXContainerItemProxy */; + name = UILoadControl; + target = 9E50973EECDF5CAC627F73748F98D4FF /* UILoadControl */; + targetProxy = 1C4F427160B8D7B83170B14D891BE238 /* PBXContainerItemProxy */; }; - 2E1477828D5C1995B78C895219B6C321 /* PBXTargetDependency */ = { + 2B8E752874917A442909038117337EAA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseInstanceID; target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; - targetProxy = 3A9535D8EBE11456E142EB3B14358522 /* PBXContainerItemProxy */; + targetProxy = A3A4A293C239C1913489B36F753B5E84 /* PBXContainerItemProxy */; }; - 3AF95B7C05314B4DB4C67EA83E4B3F1C /* PBXTargetDependency */ = { + 2EB9D86647D96FC75C9BC2B4E78A661C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromisesObjC; - target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; - targetProxy = 4E7E32F79CED033B90AB2A7F9F47D3B6 /* PBXContainerItemProxy */; - }; - 3C01E8B2ABDACA4ADB4A94F28E28C01F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseAnalyticsInterop; - target = D372E53E2E8FEAA06A0439FB85E65767 /* FirebaseAnalyticsInterop */; - targetProxy = E54A7C392F61FB6D7E3EA173411879AE /* PBXContainerItemProxy */; + name = FirebaseInstallations; + target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; + targetProxy = 7892028188D5BAB512D8A9010A976621 /* PBXContainerItemProxy */; }; - 3C5F60AF22C3DAA1CC3002A0150E64A2 /* PBXTargetDependency */ = { + 3320BF98D212E30C4B2AE85F91010B30 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleDataTransportCCTSupport; target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; - targetProxy = 582152F284EF100D3A726E20060999B9 /* PBXContainerItemProxy */; + targetProxy = D8BDBD6BFC2F5786916E866B3A187ED7 /* PBXContainerItemProxy */; + }; + 35D4DDDC46BCC1F80CAF350CE40B8A0B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleDataTransport; + target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; + targetProxy = 68E33B0DDB745076E548AD5A8C68E7BF /* PBXContainerItemProxy */; }; - 45754485D421A319D0316B8FEA8253CB /* PBXTargetDependency */ = { + 3DC6536EB5E08DCED4EA2535D1431C4E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleUtilities; target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 4A984F07F460FA692C2FA9B39C13D5CB /* PBXContainerItemProxy */; + targetProxy = 416FF16C412BE3F376415F519A4F6B1F /* PBXContainerItemProxy */; }; - 469E6621367F78B12367143E2E7611EE /* PBXTargetDependency */ = { + 3F78FAC9BCFBD96FCB0F2DD685722798 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 55410B3B8C6C86E46F5D620C997223E4 /* PBXContainerItemProxy */; + name = FirebaseInstallations; + target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; + targetProxy = E2EF0F743EAE8CCDED76E6A589C0C400 /* PBXContainerItemProxy */; }; - 47F7ADB8986F5E9BE4DB60F526E1C5BF /* PBXTargetDependency */ = { + 402B90D272B9691D8EC7747C225A0C54 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; - targetProxy = C06A0ED91FE8430A212031019FA123BF /* PBXContainerItemProxy */; + name = GoogleAppMeasurement; + target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; + targetProxy = F0E217E05D1393ADE51571C7A676E818 /* PBXContainerItemProxy */; }; - 4B577783489C73939B15F79221B25069 /* PBXTargetDependency */ = { + 41C04C3861551723CE9501FC98893A4D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = nanopb; - target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = 93D95A8F828343257614B1AD7E919768 /* PBXContainerItemProxy */; + name = GoogleDataTransport; + target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; + targetProxy = 6AA672764F09810C64550E2B66C2EB12 /* PBXContainerItemProxy */; }; - 52F53134BB3A9727B90CAD96E3B7709C /* PBXTargetDependency */ = { + 41C2444631B73648E5A349144DCF19C9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardManagerSwift; - target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; - targetProxy = FBD0409BFEA2CA90BDEB2A7DE3A603C0 /* PBXContainerItemProxy */; + name = SwiftyJSON; + target = D118A6A04828FD3CDA8640CD2B6796D2 /* SwiftyJSON */; + targetProxy = 58B5B532F42F7FD99385AE28ADF2DBFD /* PBXContainerItemProxy */; }; - 549638661BFFA18BC7E01B41898D894E /* PBXTargetDependency */ = { + 425FACFBBC84B6572FCB11121ECBFE8C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Protobuf; - target = 470FE31978DC918618A329D8B55C85FF /* Protobuf */; - targetProxy = AECACEDEFF4CB3939DC1C3E15F7B1923 /* PBXContainerItemProxy */; + name = PromisesObjC; + target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; + targetProxy = CD3EC2B7DDF2C69F8BEDA903135B0F6A /* PBXContainerItemProxy */; + }; + 4638C27110C7C986AE33C4FC02E2DDB1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = BDC423B1753D750BB6B5868D4840DD36 /* PBXContainerItemProxy */; }; - 577770AD0ED1EE2D4DDC87CD65A85408 /* PBXTargetDependency */ = { + 484C536927B093575B329668FB775790 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GTMSessionFetcher; target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 501B510A0F8EFDF1CF656303AB83849A /* PBXContainerItemProxy */; + targetProxy = 0FD92C502E5D9984CA8F9410A6F976F6 /* PBXContainerItemProxy */; }; - 5881ACA4806D218DA6CD994256F9B2F1 /* PBXTargetDependency */ = { + 49B0D9C8407489B33714FB7D3EEAB6BA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; - targetProxy = FA144ABD969DF59EFADF2BDC900F3C54 /* PBXContainerItemProxy */; + name = NotificationBannerSwift; + target = 2F2745F4FABCC3C8D07F78FE199F16EE /* NotificationBannerSwift */; + targetProxy = 04A842BDEEC32BED6EA43B36799F841C /* PBXContainerItemProxy */; }; - 5B55E15B33BAA67F79AFB259D0AFB7F1 /* PBXTargetDependency */ = { + 518EA7D89822E9565E3E874EAD7F891F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = BB4654C1C7704BA87C3F164D5D75E248 /* PBXContainerItemProxy */; + name = GoogleAPIClientForREST; + target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; + targetProxy = 2D23B05C657DC4B162BCA6B9D49A1D42 /* PBXContainerItemProxy */; + }; + 51A3687BE584021C2F3255D05A5E1ACB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SnapKit; + target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; + targetProxy = D8A289C3DCF1782673DB7C494B54EE6D /* PBXContainerItemProxy */; + }; + 58C88E366DCDEFCE5312D06E00F236F4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = F66E153907D38C6F8FD03BFA82AD29B5 /* PBXContainerItemProxy */; }; - 5D7C952CB9228D87BFC7BF750E8C3321 /* PBXTargetDependency */ = { + 5D49A7B35CB7802281379B65D701BAD3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseMLVision; + target = 0197D7CB5341EE949E9B8A3B937F2DB3 /* FirebaseMLVision */; + targetProxy = 9B849AE6B97D5A9A33780500AA629F49 /* PBXContainerItemProxy */; + }; + 607F945AB4FA2F9CD6074FFD9586E044 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 772BEACC9EDABA67E905C2A2631E857C /* PBXContainerItemProxy */; + targetProxy = DB2C70D801FC676D33489976EAC5C07E /* PBXContainerItemProxy */; }; - 6142F463FB1254A11E3F7E7E3B995510 /* PBXTargetDependency */ = { + 662D69E4D2194496C6661927A0BF360E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; - targetProxy = 763BBAE3F280195B70DC033CC3F677CD /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 986663CEB228606C261A2BF2D36270E1 /* PBXContainerItemProxy */; }; - 664F26396E82F77EC3827C98DC516F9E /* PBXTargetDependency */ = { + 66A75374ECBF6EFBE93D16B29DA941A5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleAPIClientForREST; - target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; - targetProxy = 504C6F241837295881BC95A6D9130861 /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 393AF2B57666BE31C7313C82BB5E3D3C /* PBXContainerItemProxy */; }; - 69FE4DD99AF7F104FF63E2D71180C6C6 /* PBXTargetDependency */ = { + 6DCF89B9376173CD828A0ADC69E1795B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GTMSessionFetcher; target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 8844A8BF0C7C663E533D88EA8C2B2516 /* PBXContainerItemProxy */; + targetProxy = 34DA2447B4877F3B18E1030E10CD4678 /* PBXContainerItemProxy */; }; - 6DFC52D1628C1CFAE4E0B45C940E2460 /* PBXTargetDependency */ = { + 6F442D39B7D41876611A0A93EB44CD13 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MarqueeLabel; target = C23DB88E45B0ED14F0C8827BE9C46C95 /* MarqueeLabel */; - targetProxy = 4CA62E21D344B4DE9B8941E7D2FE037B /* PBXContainerItemProxy */; + targetProxy = 3E40EF9FCC76EA8A8CAB43C7D753A914 /* PBXContainerItemProxy */; }; - 6F68F846D54B547993C9519F1CE15801 /* PBXTargetDependency */ = { + 6F6CEE5103C08AE4EB071B810347FF33 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = BB427BDABBED0620BE11BB7C39D2AC6A /* PBXContainerItemProxy */; - }; - 708B866795A1A1010D3D57DCEE708F59 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PromisesObjC; - target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; - targetProxy = 9252F959D53938CC6DBEE4E9C35918F7 /* PBXContainerItemProxy */; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = D2356DF9C8197EA844DC923FCAE9E093 /* PBXContainerItemProxy */; }; - 76C964EB0975B10BC4DD4AD50F7890FA /* PBXTargetDependency */ = { + 737541A6520B1A4EF92C39574F02D00B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseMLVisionTextModel; target = 7ABC58EF037E8B5BE0CD776D0D629DE6 /* FirebaseMLVisionTextModel */; - targetProxy = F79F45D812534A6EE912CC1562BCB3C0 /* PBXContainerItemProxy */; + targetProxy = E5D26BFC17F45AD97FB2485A4BED3C43 /* PBXContainerItemProxy */; }; - 78A901ECE524AF6A097D63028C5083DD /* PBXTargetDependency */ = { + 743668BC7FC707A4536872EF86978664 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = B331AA783783E6C480EA0795E1056900 /* PBXContainerItemProxy */; + name = FirebaseAnalytics; + target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; + targetProxy = 96E58B42EBF2F74314F212AD14338C85 /* PBXContainerItemProxy */; }; - 7D17323AFBD5A2046939EFBB0ED98590 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = UILoadControl; - target = 9E50973EECDF5CAC627F73748F98D4FF /* UILoadControl */; - targetProxy = 52DFCAC0C703A56CE23F5C0BE883F6E6 /* PBXContainerItemProxy */; - }; - 80B54E167AD5A467FD37D59359A4B139 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Firebase; - target = 072CEA044D2EF26F03496D5996BBF59F /* Firebase */; - targetProxy = C0E53D54621111D5302DCE71C591BCA1 /* PBXContainerItemProxy */; - }; - 8234191272500759CEE4C8885D555FA9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleAPIClientForREST; - target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; - targetProxy = D589FF78FACA845715D46726DF5B8134 /* PBXContainerItemProxy */; - }; - 82DB68511E14E75B1C5C1B4439D542A4 /* PBXTargetDependency */ = { + 7D71CC47542D89009BA1492813F4CCD4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = nanopb; target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = 3A8590D5FFF78339F13CC3E42E5C45C6 /* PBXContainerItemProxy */; - }; - 849A37DB0819C207B055038E5C516639 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Popover; - target = 89ADB0D61D0BE9648E9853F5F8BDA717 /* Popover */; - targetProxy = 7D5599423DEADA133E64266C57ECFEDE /* PBXContainerItemProxy */; + targetProxy = E2FAA17B0FAA153F0DE3BAD56D32D749 /* PBXContainerItemProxy */; }; - 887328F615A9DDEC6FD4569B40ED0E8C /* PBXTargetDependency */ = { + 7E7189CBCF55C9F3EEEE62328F6E04A3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = D0003EB733992D82D1ECDC783656D6BD /* PBXContainerItemProxy */; + targetProxy = ED6D8C7C51E1843257BFB46713893B02 /* PBXContainerItemProxy */; }; - 894E1CBD62C2C42F1D074B2F8B9B5E9E /* PBXTargetDependency */ = { + 8CD323D40F1498E559138C546C47E8D8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCrashlytics; - target = 526C4398D095B3704EB933DADBC30093 /* FirebaseCrashlytics */; - targetProxy = C40866C3372AFC23014666B7A409F5F9 /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = BE4E96E61EC193660A2381E42162D6E7 /* PBXContainerItemProxy */; }; - 90039FDA1A42F389A309D3047AA3966C /* PBXTargetDependency */ = { + 9201837927D7D23019005AA0C7EC36C2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-FoodScan"; - target = 37BBF22A0E981064B619306ED6E4F13D /* Pods-FoodScan */; - targetProxy = C348B265E9A28C778CEED8FF3C9214E1 /* PBXContainerItemProxy */; + name = GoogleToolboxForMac; + target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; + targetProxy = E01D7DC612B489FF47941C215B9B481D /* PBXContainerItemProxy */; }; - 923096D325082E5325E5546212562573 /* PBXTargetDependency */ = { + 952C81D3C5506169125E759138585FA0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnosticsInterop; - target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; - targetProxy = CF4FB4A222284D32D4C064902EA8F83C /* PBXContainerItemProxy */; + name = FirebaseCrashlytics; + target = 526C4398D095B3704EB933DADBC30093 /* FirebaseCrashlytics */; + targetProxy = 93162EDEDF42FA17B018A16269603EC6 /* PBXContainerItemProxy */; }; - 934FD63938902294E34EDECFF8ACA1C5 /* PBXTargetDependency */ = { + 9C6411E0AE97F8A58A40E299C2B64EB5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Firebase; + target = 072CEA044D2EF26F03496D5996BBF59F /* Firebase */; + targetProxy = FEC37263565040CFEC6B22BCD6199F36 /* PBXContainerItemProxy */; + }; + 9D0665A2858A74C93A390439611B24A7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCoreDiagnostics; target = 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */; - targetProxy = 7F214944973E1BCB374A108BAE1A7B02 /* PBXContainerItemProxy */; + targetProxy = C59EC6A2CE78AA1498EF2F10C67ED542 /* PBXContainerItemProxy */; }; - 94FB43E7E896EB4F517FB43B85BC8475 /* PBXTargetDependency */ = { + A2C7476F01A9FF9334165C57F3B820B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleDataTransportCCTSupport; - target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; - targetProxy = 783D4F35CEEE7704AAEBE9C7607799B3 /* PBXContainerItemProxy */; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = 42F029B44A8C6D9F4006502E81268439 /* PBXContainerItemProxy */; }; - 9685C2F91F25CE2958B30D3A4F1D5F71 /* PBXTargetDependency */ = { + A48C0B83A36EF6D9807578164A111D78 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleDataTransport; - target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; - targetProxy = 62FD6435D02AAEB8E1FB8C9C5E56553D /* PBXContainerItemProxy */; + name = FirebaseInstallations; + target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; + targetProxy = D906D5E0618F51F0A4939591D1A05090 /* PBXContainerItemProxy */; }; - 98EB5E34B40A0F5C91B5693A30936E0B /* PBXTargetDependency */ = { + A69CC363B323C10C459BCD6BC5C1C14F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = MarqueeLabel; - target = C23DB88E45B0ED14F0C8827BE9C46C95 /* MarqueeLabel */; - targetProxy = CCBB4B1783A7B9B9399E9C2CD1BA29F1 /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = B528333B75A1CC1CC0D8F5239BF06F7A /* PBXContainerItemProxy */; }; - 9A0B22B2114BAA2545F2C71ECECD68A6 /* PBXTargetDependency */ = { + A8901FD3FB366F4CFAA59D0D385C221A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseInstanceID; target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; - targetProxy = 1E2AA36E758B684D1F2045DE2190B8EF /* PBXContainerItemProxy */; - }; - 9AEF70695A4D8D12B81775F92C705E6C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseMLCommon; - target = 3B7356AB7ABB18E92E7628E5656F9625 /* FirebaseMLCommon */; - targetProxy = 4715B2E28C63ADFEAF930AF03CF1A02A /* PBXContainerItemProxy */; - }; - A3FB902844526E235AED5B722308A8A7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 821B05724B18325D19950C813A88A357 /* PBXContainerItemProxy */; + targetProxy = 736D9896C822A411CA593D264BB318C2 /* PBXContainerItemProxy */; }; - A4C3C9945377A4354F6920DF1809345A /* PBXTargetDependency */ = { + AA8CB1BF032ECB07FCDD5F351938682D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseMLCommon; target = 3B7356AB7ABB18E92E7628E5656F9625 /* FirebaseMLCommon */; - targetProxy = 47DD7050429D11D854F1CFCFB263DB55 /* PBXContainerItemProxy */; + targetProxy = 1AE5DD1C70E10B3A45652AD2A1D74988 /* PBXContainerItemProxy */; }; - A9CB5ED856AA63D63F700A3826ABABB5 /* PBXTargetDependency */ = { + B0B326B11E4F697F7C483DBE48EE3243 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Alamofire; - target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; - targetProxy = 162F06772FDA70D397F5A73A4FA06FE9 /* PBXContainerItemProxy */; + name = FirebaseCrashlytics; + target = 526C4398D095B3704EB933DADBC30093 /* FirebaseCrashlytics */; + targetProxy = 6E5F7B89FD6EF78250ADCE58BDBA4F56 /* PBXContainerItemProxy */; }; - B49A68B10F393CC12E6A9B19FEB41B08 /* PBXTargetDependency */ = { + B81F5D4B94D0F0AEA901C51921B6192B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleUtilities; - target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 25BF9CD70A4ABA5B4F6FC44B6D7B35A0 /* PBXContainerItemProxy */; + name = PromisesObjC; + target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; + targetProxy = 378D4EA8A159126D1F68FA843BD5483E /* PBXContainerItemProxy */; }; - B7D254F67B7AA69B4F585EABD11B32B3 /* PBXTargetDependency */ = { + B9BC7D62523939C5E04D5684A589916F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnosticsInterop; - target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; - targetProxy = EE0B193BE18D54006EBF209AEEB93DFD /* PBXContainerItemProxy */; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = 2939CD12A73B4B2B67871D88C9495CF2 /* PBXContainerItemProxy */; }; - B80C6C560AFACFA5AB72ABEE08F000E5 /* PBXTargetDependency */ = { + BB3F5671A9D512EEA7EABFB6F4C9A1E1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 50F7354E8C21906F6CB8B3A5E2C779F5 /* PBXContainerItemProxy */; + name = MarqueeLabel; + target = C23DB88E45B0ED14F0C8827BE9C46C95 /* MarqueeLabel */; + targetProxy = 51A8D4BEDA1F3CD39CBA48BD66A182B9 /* PBXContainerItemProxy */; }; - B862E85620BB966D66B36558671CAB1D /* PBXTargetDependency */ = { + BF5D7F045B889FC9DC6E429E061D9E17 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-FoodScan"; - target = 37BBF22A0E981064B619306ED6E4F13D /* Pods-FoodScan */; - targetProxy = 941B4D419141CCB4F87451BE228E0A4D /* PBXContainerItemProxy */; + name = Cosmos; + target = 00F31BD5217A20974B5E9AAC6256D98E /* Cosmos */; + targetProxy = EBD11EEFAE5422510A910CFA052EA7ED /* PBXContainerItemProxy */; }; - BCD45C74E6F660AF557C6BA9FEB0B338 /* PBXTargetDependency */ = { + BFCBA725A527E4DA06C1DA9CBE0F0A57 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseMLVisionTextModel; - target = 7ABC58EF037E8B5BE0CD776D0D629DE6 /* FirebaseMLVisionTextModel */; - targetProxy = 5BC473DE24B91CB68EF2F0304B0E84AD /* PBXContainerItemProxy */; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = D644FE6F4DF0802D88E2D4919F6E4555 /* PBXContainerItemProxy */; }; - BE09C57E414DEC9BDCFAE576C6437788 /* PBXTargetDependency */ = { + C0DE6BB4AE2610A2C0ECC24B2BDEEDFE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 82FE962820F6D9AC528006C65DD47C6C /* PBXContainerItemProxy */; + name = GoogleAppMeasurement; + target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; + targetProxy = BCDDCFDF74FB084D83A8925814DE03DE /* PBXContainerItemProxy */; }; - C25D306C05016E999E64861F5C2CABA8 /* PBXTargetDependency */ = { + C32639F8888425A3999E8869A27832B2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnostics; - target = 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */; - targetProxy = EC410ED7937F324E0B9E19404BDF3019 /* PBXContainerItemProxy */; + name = GoogleAPIClientForREST; + target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; + targetProxy = 06C4D717768C32060CEB5ABE3BBB65E1 /* PBXContainerItemProxy */; }; - C50044BE9F3B1ED9379D4FF2EB6B3E15 /* PBXTargetDependency */ = { + C4B1C68DF6540E90A5E3492870304E8C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseAnalyticsInterop; - target = D372E53E2E8FEAA06A0439FB85E65767 /* FirebaseAnalyticsInterop */; - targetProxy = 01148D58FED926BE0C9A3EF932BBF85D /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = B35F9CD8D0F8E2A8AFCF9CC328DFAB3B /* PBXContainerItemProxy */; }; - C8FEEC82C3CB9647146D5FD965425279 /* PBXTargetDependency */ = { + C58CF25B4B7ED50952BEDC652A163268 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnosticsInterop; - target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; - targetProxy = 47DBEC006BC893E5097C48A54BBD6AC4 /* PBXContainerItemProxy */; + name = "Pods-FoodScan"; + target = 37BBF22A0E981064B619306ED6E4F13D /* Pods-FoodScan */; + targetProxy = 849BDDEC0A2986DD3633F14A0E244239 /* PBXContainerItemProxy */; }; - D260A19E85E04F2B1391EB57B213888B /* PBXTargetDependency */ = { + C8E31493B5C204E7DF261950EA8D5E41 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Protobuf; target = 470FE31978DC918618A329D8B55C85FF /* Protobuf */; - targetProxy = D87BFEF13439D9827255F98157DD8799 /* PBXContainerItemProxy */; + targetProxy = 7F90FF9BD21BAC62433225F1BFF4710F /* PBXContainerItemProxy */; }; - D77387782E8E17624D9851E8C7A7C4E6 /* PBXTargetDependency */ = { + CA6A7565F1462714AB5938B57DBF02FA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NotificationBannerSwift; - target = 2F2745F4FABCC3C8D07F78FE199F16EE /* NotificationBannerSwift */; - targetProxy = 9A22DCCDFF0579048EE679AD7E10E30D /* PBXContainerItemProxy */; - }; - E83DD506EE8AB8EFD6CDFA16F19F0033 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseMLVision; - target = 0197D7CB5341EE949E9B8A3B937F2DB3 /* FirebaseMLVision */; - targetProxy = 51F0EE8A6EF4C88533DE617A8BE46263 /* PBXContainerItemProxy */; + name = GoogleDataTransportCCTSupport; + target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; + targetProxy = F27CB909A20B5A738B530852BA96A087 /* PBXContainerItemProxy */; }; - EE1263424EE671DB47DD375331CCAFCF /* PBXTargetDependency */ = { + CBFD22D45847D5264FEB361AD4E02CC7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleDataTransport; target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; - targetProxy = F2360064187B8AE54FF8D053E5D72933 /* PBXContainerItemProxy */; + targetProxy = F18F364909ECAFB4061C0EF9B2D618FF /* PBXContainerItemProxy */; }; - EF4812FAD4316606100B64B48952B03E /* PBXTargetDependency */ = { + D19715D7386FDF67706421A2B6872BD2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleUtilities; - target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 5BA7110D3C371A393745AD7985D2A91C /* PBXContainerItemProxy */; - }; - F51B061AA943358B69810C99CFAD03AF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseCrashlytics; - target = 526C4398D095B3704EB933DADBC30093 /* FirebaseCrashlytics */; - targetProxy = 6F9E6E6DB1B7817FBBB71F39FBC123C1 /* PBXContainerItemProxy */; + name = Alamofire; + target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; + targetProxy = AECC489983C10851CF5F339D39656BA0 /* PBXContainerItemProxy */; }; - F5C98794F04FD223699EC628989BC58F /* PBXTargetDependency */ = { + D6DBAEF52DD50F019E912ED328677694 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 496DFD8171D1BB69941CF2A9F178F900 /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 95121CCF7F51E866DBCAD4B118EA2CE0 /* PBXContainerItemProxy */; }; - FA320F006B61E393D03FBC90BF2C86A3 /* PBXTargetDependency */ = { + D98FD2CFD6EE8CA4BBD153D4F01B984E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SnapKit; target = 19622742EBA51E823D6DAE3F8CDBFAD4 /* SnapKit */; - targetProxy = 3A004B52C6AC4ACCB0D46B1D6A47306C /* PBXContainerItemProxy */; + targetProxy = CA60E77A6C12646D3E1B6A24A4B234A3 /* PBXContainerItemProxy */; }; - FAA00EC69E57E2D641AC8F8B26ECE96F /* PBXTargetDependency */ = { + DA0F82CF5BEF5A356FE27814D901DD1F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseInstanceID; - target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; - targetProxy = 1E12DB9BE6626CAFF7C363E54A285FFD /* PBXContainerItemProxy */; + name = FirebaseCoreDiagnostics; + target = 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */; + targetProxy = 171CEA6AEAAB1E5FE7D24E6049EBF665 /* PBXContainerItemProxy */; }; - FCDC11B63E25604298F4EA5EBDBAD866 /* PBXTargetDependency */ = { + DE46287315CEA5C49D19D4964694A05B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SwiftyJSON; - target = D118A6A04828FD3CDA8640CD2B6796D2 /* SwiftyJSON */; - targetProxy = 8B56B71CEB62E2E3500C93AB33686841 /* PBXContainerItemProxy */; + name = "Pods-FoodScan"; + target = 37BBF22A0E981064B619306ED6E4F13D /* Pods-FoodScan */; + targetProxy = 0BCD817BC12461F9BCB40F59857799BD /* PBXContainerItemProxy */; + }; + DF6B72108DB1E3F8076C95CE269FA149 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = F451A874784F42B30D83EA679023C690 /* PBXContainerItemProxy */; }; - FEEC05D06D500DE22DA429C694EE8636 /* PBXTargetDependency */ = { + E01A59D8F3CF604D99E5E3CA2E56E2CE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = nanopb; target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = D3523FAA72B63AD9E1150BDD6CFA8910 /* PBXContainerItemProxy */; + targetProxy = 4755EEF2108ECEB0C27E27BB39B0C69A /* PBXContainerItemProxy */; }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 03C859817B7FAE82ED6589271118D77E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C2B808561A83CD24DDDA3C1579199BBC /* GoogleDataTransportCCTSupport.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.modulemap"; - PRODUCT_MODULE_NAME = GoogleDataTransportCCTSupport; - PRODUCT_NAME = GoogleDataTransportCCTSupport; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; + E46547A8322CD60C444A1BAF2D99A995 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseMLVision; + target = 0197D7CB5341EE949E9B8A3B937F2DB3 /* FirebaseMLVision */; + targetProxy = 282154D0CD8A91A5C6517245D306E88C /* PBXContainerItemProxy */; }; - 08BAB76A118EBDF46C1E84117EDCD460 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 808BC07A97958AA7B7205673330FABE5 /* GoogleToolboxForMac.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-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/GoogleToolboxForMac/GoogleToolboxForMac.modulemap"; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; + E94077BD7C9C22BBF315A59003D8B739 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = PromisesObjC; + target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; + targetProxy = 518AA8ACF4BDAC048FF42EBF9677527F /* PBXContainerItemProxy */; + }; + EB3172D5F474D2EB7DA0F10DCF2F909A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = FD9A3455E470869799A6D8E2DEABC7C3 /* PBXContainerItemProxy */; + }; + F0A23D56CABF93D220C666D89554076A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseInstallations; + target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; + targetProxy = 80766B031BE82E55020930E91837D0FF /* PBXContainerItemProxy */; + }; + F3C6382B3DA5FE342F8FB684F40696A2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = AE4FC778535C85D177A57C7460B0D0F9 /* PBXContainerItemProxy */; + }; + F420FC6C600B953E989A24DC56BD2D83 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 8D3C3F43FCF38B1712802C1750734B62 /* PBXContainerItemProxy */; + }; + F674A22920918BEED572A19D23D1FC50 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Protobuf; + target = 470FE31978DC918618A329D8B55C85FF /* Protobuf */; + targetProxy = C7577D5DF4DBFC2817DEC0BDAFDA8E73 /* PBXContainerItemProxy */; + }; + F891C36D19C78976C2104CF24A578287 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseMLCommon; + target = 3B7356AB7ABB18E92E7628E5656F9625 /* FirebaseMLCommon */; + targetProxy = 3756DD7E12D3999772D4D13F8233E762 /* PBXContainerItemProxy */; + }; + FCB365336021B979F8C70DA247668941 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Protobuf; + target = 470FE31978DC918618A329D8B55C85FF /* Protobuf */; + targetProxy = FE9BC87D3F77EBDB334EDD21C2420294 /* PBXContainerItemProxy */; }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ 08F97CE47B9A358716FEDC462F2FE8EB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F32098B1A2022AC15528F4EAE12D966 /* IQKeyboardManagerSwift.xcconfig */; + baseConfigurationReference = 8C9B0DD0FF123C5BD84926D32C0054C7 /* IQKeyboardManagerSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -6838,7 +7361,7 @@ }; 0BB01431ED3CF8E545C4E1E30D8A5DB0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AF38B7A656B8D28F042437914588D2E9 /* NotificationBannerSwift.xcconfig */; + baseConfigurationReference = FCFCD65F9FCF18875443EB66BCF3C6D2 /* NotificationBannerSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -6871,9 +7394,9 @@ }; name = Debug; }; - 0EED7B5952B625CFBB5DE45CC3A4F11C /* Debug */ = { + 1206BE2E09F9693BBC7FA2388EF59C7E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 416E8C378BE14B0CC54435CB5415CE73 /* Protobuf.xcconfig */; + baseConfigurationReference = 6E54F7A0A7420003D834F95671AB5919 /* FirebaseCore.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -6884,8 +7407,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Protobuf/Protobuf-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseCore/FirebaseCore-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -6893,93 +7415,24 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Protobuf/Protobuf.modulemap"; - PRODUCT_MODULE_NAME = protobuf; - PRODUCT_NAME = protobuf; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseCore/FirebaseCore.modulemap"; + PRODUCT_MODULE_NAME = FirebaseCore; + PRODUCT_NAME = FirebaseCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 101B7E5D124C0B531E75583658479615 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5D9D50DF6FA7538AC67A9D05A74250B6 /* SnapKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-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/SnapKit/SnapKit.modulemap"; - PRODUCT_MODULE_NAME = SnapKit; - PRODUCT_NAME = SnapKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 11C20DA8ECC67E6A0DF5807790C98128 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 11DCBC916CDC08D9DD43E02774AC44EB /* FirebaseCrashlytics.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.modulemap"; - PRODUCT_MODULE_NAME = FirebaseCrashlytics; - PRODUCT_NAME = FirebaseCrashlytics; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 125CD3EF38F70E05CE5CC26EABEFC304 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 57BFAC23C9D9FDA42BF24BE37B9D46C6 /* SwiftyJSON.xcconfig */; + baseConfigurationReference = 444FB82D62A7EFBFC2D15017F2FF2A61 /* SwiftyJSON.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7013,45 +7466,9 @@ }; name = Release; }; - 127E6ED428FD11FADE60A2F914198F5F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1110EF1602A48045BFB5CD62C1448ABA /* FirebaseInstanceID.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID.modulemap"; - PRODUCT_MODULE_NAME = FirebaseInstanceID; - PRODUCT_NAME = FirebaseInstanceID; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 132D4CF1E4E92E1FB6B5B93089F364D9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2683EF76CCA3268707D37B93DF70B48F /* MarqueeLabel.xcconfig */; + baseConfigurationReference = 790FB337CB3D48F038502957C9E7B50F /* MarqueeLabel.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7085,9 +7502,9 @@ }; name = Release; }; - 155409A4D74A6C19BD650144F8551ADC /* Release */ = { + 16B11BAB003CAA0186473E3BA5FCEAB7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 808BC07A97958AA7B7205673330FABE5 /* GoogleToolboxForMac.xcconfig */; + baseConfigurationReference = 6F49AEABFA6067D98833975B51CA5A2C /* GoogleDataTransport.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7098,8 +7515,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist"; + INFOPLIST_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7107,9 +7523,10 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap"; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap"; + PRODUCT_MODULE_NAME = GoogleDataTransport; + PRODUCT_NAME = GoogleDataTransport; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -7121,9 +7538,9 @@ }; name = Release; }; - 16F3ADA0F11941F62E05330E0F3B1016 /* Release */ = { + 1AAD4C2029F86FC5EF33FDA760B7A330 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 762E9155A1063DDA02AE680D8AF80FDE /* FirebaseInstallations.xcconfig */; + baseConfigurationReference = 885E47B012DF5AB0F7EF8BD87C91D3AA /* FirebaseCrashlytics.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7134,7 +7551,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7143,23 +7560,22 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap"; - PRODUCT_MODULE_NAME = FirebaseInstallations; - PRODUCT_NAME = FirebaseInstallations; + MODULEMAP_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.modulemap"; + PRODUCT_MODULE_NAME = FirebaseCrashlytics; + PRODUCT_NAME = FirebaseCrashlytics; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 192CC0537E6EF22B08736F8676512A57 /* Debug */ = { + 1B92C46BC17F5E0B095B879D8BB7B054 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5D9D50DF6FA7538AC67A9D05A74250B6 /* SnapKit.xcconfig */; + baseConfigurationReference = 630F25B88555F922422BA2905EF3707C /* nanopb.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7170,8 +7586,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/nanopb/nanopb-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7179,22 +7595,22 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; - PRODUCT_MODULE_NAME = SnapKit; - PRODUCT_NAME = SnapKit; + MODULEMAP_FILE = "Target Support Files/nanopb/nanopb.modulemap"; + PRODUCT_MODULE_NAME = nanopb; + PRODUCT_NAME = nanopb; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 207E4AE6916456D7ED3BA054C3108F8E /* Release */ = { + 1C669A60F3C3A47A26C0AA1CAC5E322A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BEED5CF6A7D848A52E8280255897EE24 /* GoogleDataTransport.xcconfig */; + baseConfigurationReference = 5D6DF93D700922A1ADC42A6A93543107 /* SnapKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7205,7 +7621,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7213,24 +7630,22 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap"; - PRODUCT_MODULE_NAME = GoogleDataTransport; - PRODUCT_NAME = GoogleDataTransport; + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; + PRODUCT_MODULE_NAME = SnapKit; + PRODUCT_NAME = SnapKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; 21B4D0A99DC00F7DD020ACB0D1389157 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D545D687E14A116AED262D7A19881936 /* UILoadControl.xcconfig */; + baseConfigurationReference = 6AE37AA83D48E896DF9E41C68FD1FBE1 /* UILoadControl.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7324,9 +7739,25 @@ }; name = Release; }; - 2600FA2E95A17A82DA31306BB3096667 /* Release */ = { + 25A31A94858B39C57961B6A606922BFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31A9667DF5A6155DFC5A18F4AB5E3ADF /* FirebaseMLVisionTextModel.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 2675B1896D8551FDFE028642207C0488 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2788AA39E038004180BDDEEA6F325D15 /* GoogleAPIClientForREST.xcconfig */; + baseConfigurationReference = 91B34A6E8FCF5A637841C38BAC067ECA /* GoogleToolboxForMac.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7337,8 +7768,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7346,9 +7777,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap"; - PRODUCT_MODULE_NAME = GoogleAPIClientForREST; - PRODUCT_NAME = GoogleAPIClientForREST; + MODULEMAP_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap"; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -7360,9 +7791,26 @@ }; name = Release; }; + 2CFF940BE24626A0D6AFAAF88D5F3B73 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31A9667DF5A6155DFC5A18F4AB5E3ADF /* FirebaseMLVisionTextModel.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/FirebaseMLVisionTextModel"; + IBSC_MODULE = FirebaseMLVisionTextModel; + INFOPLIST_FILE = "Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = GoogleMVTextDetectorResources; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 2D9DFCECBE35D464028D0E6541E43F44 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D545D687E14A116AED262D7A19881936 /* UILoadControl.xcconfig */; + baseConfigurationReference = 6AE37AA83D48E896DF9E41C68FD1FBE1 /* UILoadControl.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7395,9 +7843,44 @@ }; name = Debug; }; + 2F7F80EEC86EE5E847DF8AA46811DFF3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D7F714C81BAA8BFC990B197AE6C14F7B /* Protobuf.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Protobuf/Protobuf-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/Protobuf/Protobuf.modulemap"; + PRODUCT_MODULE_NAME = Protobuf; + PRODUCT_NAME = Protobuf; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 33451F8E4D682331EE4BB22AD1CD5BBD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1488555ACB4273A4F0AF2E780589ABF6 /* Popover.xcconfig */; + baseConfigurationReference = 822D9EF4AC2FE242E04C7422533D6D39 /* Popover.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7430,9 +7913,9 @@ }; name = Release; }; - 38F6C2A50524859FFE4613E5B6270EB8 /* Release */ = { + 3614E2B72D5AA868A13B0478CE05C0A9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 00C708B92EF46243BE1B545E47CF4B95 /* Cosmos.xcconfig */; + baseConfigurationReference = 6C60FB2ED34CBD26773DB0F6764018CB /* FirebaseCoreDiagnostics.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7443,8 +7926,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Cosmos/Cosmos-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Cosmos/Cosmos-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7452,13 +7934,14 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Cosmos/Cosmos.modulemap"; - PRODUCT_MODULE_NAME = Cosmos; - PRODUCT_NAME = Cosmos; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap"; + PRODUCT_MODULE_NAME = FirebaseCoreDiagnostics; + PRODUCT_NAME = FirebaseCoreDiagnostics; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -7466,9 +7949,9 @@ }; name = Release; }; - 3B7A2185A0A5582F66BE479172A09177 /* Debug */ = { + 38231AF0C59CCC0F135E2249400691F7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 853E26053E0F37133D37E03C471A7710 /* Pods-FoodScan.debug.xcconfig */; + baseConfigurationReference = 0612EAD4175959AC43D07BBBD03F9F82 /* Pods-FoodScan.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -7499,14 +7982,15 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 3C60975BD46B782294D00943C129A95C /* Debug */ = { + 38F6C2A50524859FFE4613E5B6270EB8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BEED5CF6A7D848A52E8280255897EE24 /* GoogleDataTransport.xcconfig */; + baseConfigurationReference = D435FF46BAF7B2A3A6F394B2334BC853 /* Cosmos.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7517,7 +8001,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Cosmos/Cosmos-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Cosmos/Cosmos-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7525,23 +8010,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap"; - PRODUCT_MODULE_NAME = GoogleDataTransport; - PRODUCT_NAME = GoogleDataTransport; + MODULEMAP_FILE = "Target Support Files/Cosmos/Cosmos.modulemap"; + PRODUCT_MODULE_NAME = Cosmos; + PRODUCT_NAME = Cosmos; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 3CA4C2A9FAED888280930C00BB18878F /* Release */ = { + 3B4760922E0D009552052C83537108F0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 635BE606BF44BFA02DC61E12425FEA96 /* FirebaseCoreDiagnosticsInterop.xcconfig */; + baseConfigurationReference = DC39B25FAAC0E01533E78ED735D0EFE2 /* FirebaseMLVision.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -7552,13 +8037,12 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; 3D063A3B460C962E699E8D0691B10F67 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F33847DEA2A9C88EA42F0F06E7A868E5 /* SDWebImage.xcconfig */; + baseConfigurationReference = BCA5CEC9939DB30C9FF68097315C21F9 /* SDWebImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7591,9 +8075,9 @@ }; name = Debug; }; - 41E01C837B5F64B7EB231121F4743017 /* Release */ = { + 427CC76C4A0D2313B395E0BB95F76060 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 416E8C378BE14B0CC54435CB5415CE73 /* Protobuf.xcconfig */; + baseConfigurationReference = 986D0DF23450B51FC428B6126A74B787 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7604,8 +8088,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Protobuf/Protobuf-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7613,23 +8097,38 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Protobuf/Protobuf.modulemap"; - PRODUCT_MODULE_NAME = protobuf; - PRODUCT_NAME = protobuf; + MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; + PRODUCT_MODULE_NAME = Alamofire; + PRODUCT_NAME = Alamofire; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 427CC76C4A0D2313B395E0BB95F76060 /* Debug */ = { + 4318B500EAC17F82023EEC17F46497FD /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E821DF662710A7BA50E2390C820C8913 /* Firebase.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4652495A12C361D9299A514F89B1FA87 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8BC1AF659E265D6BDA211359BF90C42F /* Alamofire.xcconfig */; + baseConfigurationReference = 6C60FB2ED34CBD26773DB0F6764018CB /* FirebaseCoreDiagnostics.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7640,8 +8139,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7649,9 +8147,10 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; - PRODUCT_MODULE_NAME = Alamofire; - PRODUCT_NAME = Alamofire; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap"; + PRODUCT_MODULE_NAME = FirebaseCoreDiagnostics; + PRODUCT_NAME = FirebaseCoreDiagnostics; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -7662,9 +8161,9 @@ }; name = Debug; }; - 4A0C5CF8827FE80133587386F9942884 /* Debug */ = { + 47E465DBADE65FF8EC7839B1D8586FBD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1110EF1602A48045BFB5CD62C1448ABA /* FirebaseInstanceID.xcconfig */; + baseConfigurationReference = 439B296ECDD7432AE7F81F84F5D319AA /* FirebaseInstanceID.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7692,14 +8191,15 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 536E2F109779DAB6605163E24EC2AFAB /* Release */ = { + 53D62843308F3C45585C1FA02372ED93 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 11DCBC916CDC08D9DD43E02774AC44EB /* FirebaseCrashlytics.xcconfig */; + baseConfigurationReference = D7F714C81BAA8BFC990B197AE6C14F7B /* Protobuf.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7710,7 +8210,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Protobuf/Protobuf-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7718,10 +8219,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.modulemap"; - PRODUCT_MODULE_NAME = FirebaseCrashlytics; - PRODUCT_NAME = FirebaseCrashlytics; + MODULEMAP_FILE = "Target Support Files/Protobuf/Protobuf.modulemap"; + PRODUCT_MODULE_NAME = Protobuf; + PRODUCT_NAME = Protobuf; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -7733,9 +8233,9 @@ }; name = Release; }; - 53BC2EF0F659DDBFC5B46AD25601B427 /* Debug */ = { + 586BD357CE1348A333DC5B6998F18402 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 635BE606BF44BFA02DC61E12425FEA96 /* FirebaseCoreDiagnosticsInterop.xcconfig */; + baseConfigurationReference = FE5829F652962087767A854A3418F239 /* FirebaseMLCommon.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -7746,12 +8246,48 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 6690815594385F7B8D8567DB267E6EA1 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6F49AEABFA6067D98833975B51CA5A2C /* GoogleDataTransport.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap"; + PRODUCT_MODULE_NAME = GoogleDataTransport; + PRODUCT_NAME = GoogleDataTransport; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 62CF5FA83EC6BB2AA2B70D5CD7B1CCB8 /* Debug */ = { + 66E69441F47A2B25B9C879BE8D7EB813 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F9D59C37CCC0BA64ACC04B13DCD941A /* FirebaseMLCommon.xcconfig */; + baseConfigurationReference = E3D2382BEDB9915DD87E32A0F8EF5D38 /* FirebaseAnalytics.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -7762,12 +8298,13 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 7164A4710242941DA7CD475BC22167A5 /* Debug */ = { + 67F77C15B6C98642764D164AB269147F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8F5ABFD6F8F732B49A94525D6B224699 /* GTMSessionFetcher.xcconfig */; + baseConfigurationReference = 603B3F1059B3E9ED3815D62DA41A69E5 /* FirebaseInstallations.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7778,8 +8315,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7787,25 +8323,25 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap"; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap"; + PRODUCT_MODULE_NAME = FirebaseInstallations; + PRODUCT_NAME = FirebaseInstallations; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 7926FE43582E5C06AC36EE6FDED003B7 /* Debug */ = { + 6DB672DEBB26FBE6CACD5864D3718E87 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4B5263FA34DB6008B131081EF491E168 /* Pods-FoodScanUITests.debug.xcconfig */; + baseConfigurationReference = 603B3F1059B3E9ED3815D62DA41A69E5 /* FirebaseInstallations.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -7815,32 +8351,31 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap"; + PRODUCT_MODULE_NAME = FirebaseInstallations; + PRODUCT_NAME = FirebaseInstallations; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 80553051802108FDF4A702D4C91B0C72 /* Release */ = { + 72F73AB5AC90EA7645B681AEF36142C3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6BF4C86277852513762776455A3531A9 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = B8E1BF17ADD998CFAF9839AF429D8E62 /* GoogleUtilities.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7874,9 +8409,114 @@ }; name = Release; }; - 83EBBFDF0BC08E945D94D8621A2BF3BA /* Debug */ = { + 75E173E822BF7BDA2B53FD5D65075BD8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 69975D3D749817934CF3B10E0F8A6727 /* Pods-FoodScanTests.debug.xcconfig */; + baseConfigurationReference = 885E47B012DF5AB0F7EF8BD87C91D3AA /* FirebaseCrashlytics.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.modulemap"; + PRODUCT_MODULE_NAME = FirebaseCrashlytics; + PRODUCT_NAME = FirebaseCrashlytics; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 77A5FBD8C3F09AA5044E6303FD0AF5A4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4549BF8BAB516C4D742E2E07904A4A60 /* GTMSessionFetcher.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-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/GTMSessionFetcher/GTMSessionFetcher.modulemap"; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 7828F8FA0597E598952813DCA9D5FC25 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E821DF662710A7BA50E2390C820C8913 /* Firebase.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 78B8EFD428576987C54C800B45B62964 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31A9667DF5A6155DFC5A18F4AB5E3ADF /* FirebaseMLVisionTextModel.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/FirebaseMLVisionTextModel"; + IBSC_MODULE = FirebaseMLVisionTextModel; + INFOPLIST_FILE = "Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = GoogleMVTextDetectorResources; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 7926FE43582E5C06AC36EE6FDED003B7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4B5263FA34DB6008B131081EF491E168 /* Pods-FoodScanUITests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -7889,7 +8529,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -7898,7 +8538,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -7912,9 +8552,9 @@ }; name = Debug; }; - 847FA2DDC126E4A604C0B221EB8098E1 /* Debug */ = { + 814D97291ADF5683A633A26D53E8FC08 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D891AB31B0E8682029204C9C63F34F96 /* FirebaseMLVision.xcconfig */; + baseConfigurationReference = FE5829F652962087767A854A3418F239 /* FirebaseMLCommon.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -7928,10 +8568,12 @@ }; name = Debug; }; - 84DB22D49B2C180074829223CD661A09 /* Debug */ = { + 83EBBFDF0BC08E945D94D8621A2BF3BA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F9E33865EF0EB4B5671869FE73A0E2F /* FirebaseCore.xcconfig */; + baseConfigurationReference = 69975D3D749817934CF3B10E0F8A6727 /* Pods-FoodScanTests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -7941,47 +8583,32 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseCore/FirebaseCore-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseCore/FirebaseCore.modulemap"; - PRODUCT_MODULE_NAME = FirebaseCore; - PRODUCT_NAME = FirebaseCore; + MODULEMAP_FILE = "Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 897CCF9AB7A1E19EAA2A6EE79BDA4EE0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 249326C9D7593218704EF5F35BC508CB /* FirebaseAnalyticsInterop.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 8E0BC41E43962C554C9CD9BAB67C164B /* Debug */ = { + 8691029B5092F155992C889C981AE2DF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2683EF76CCA3268707D37B93DF70B48F /* MarqueeLabel.xcconfig */; + baseConfigurationReference = 91B34A6E8FCF5A637841C38BAC067ECA /* GoogleToolboxForMac.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -7992,8 +8619,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/MarqueeLabel/MarqueeLabel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/MarqueeLabel/MarqueeLabel-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8001,9 +8628,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/MarqueeLabel/MarqueeLabel.modulemap"; - PRODUCT_MODULE_NAME = MarqueeLabel; - PRODUCT_NAME = MarqueeLabel; + MODULEMAP_FILE = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap"; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -8014,9 +8641,9 @@ }; name = Debug; }; - 96C891B8697E2C73BABA85937639DFF2 /* Release */ = { + 8DDCBCBC5B0A0582A8ECEA1E9414783E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8BC1AF659E265D6BDA211359BF90C42F /* Alamofire.xcconfig */; + baseConfigurationReference = 8DBC27521E04C38624327393D24FA68C /* GoogleDataTransportCCTSupport.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8027,8 +8654,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; + INFOPLIST_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8036,9 +8662,10 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; - PRODUCT_MODULE_NAME = Alamofire; - PRODUCT_NAME = Alamofire; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.modulemap"; + PRODUCT_MODULE_NAME = GoogleDataTransportCCTSupport; + PRODUCT_NAME = GoogleDataTransportCCTSupport; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -8050,12 +8677,10 @@ }; name = Release; }; - 96F475CEA27426DA594A597AC9E78EC8 /* Release */ = { + 8E0BC41E43962C554C9CD9BAB67C164B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0612EAD4175959AC43D07BBBD03F9F82 /* Pods-FoodScan.release.xcconfig */; + baseConfigurationReference = 790FB337CB3D48F038502957C9E7B50F /* MarqueeLabel.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -8065,33 +8690,31 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-FoodScan/Pods-FoodScan-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/MarqueeLabel/MarqueeLabel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/MarqueeLabel/MarqueeLabel-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-FoodScan/Pods-FoodScan.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/MarqueeLabel/MarqueeLabel.modulemap"; + PRODUCT_MODULE_NAME = MarqueeLabel; + PRODUCT_NAME = MarqueeLabel; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 9D5B997D4E1498393B8FA3BAC1149C78 /* Release */ = { + 96C891B8697E2C73BABA85937639DFF2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 17E28A08FB4D1F9D788AAB1AD3609E6D /* nanopb.xcconfig */; + baseConfigurationReference = 986D0DF23450B51FC428B6126A74B787 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8102,8 +8725,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/nanopb/nanopb-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8111,9 +8734,9 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/nanopb/nanopb.modulemap"; - PRODUCT_MODULE_NAME = nanopb; - PRODUCT_NAME = nanopb; + MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; + PRODUCT_MODULE_NAME = Alamofire; + PRODUCT_NAME = Alamofire; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -8125,9 +8748,9 @@ }; name = Release; }; - 9E8835D38411CE5A68327A6A6F90FE8B /* Debug */ = { + 97AF735A13622EC5C291CE5E2CC88DA0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 17E28A08FB4D1F9D788AAB1AD3609E6D /* nanopb.xcconfig */; + baseConfigurationReference = 4549BF8BAB516C4D742E2E07904A4A60 /* GTMSessionFetcher.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8138,8 +8761,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/nanopb/nanopb-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8147,22 +8770,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/nanopb/nanopb.modulemap"; - PRODUCT_MODULE_NAME = nanopb; - PRODUCT_NAME = nanopb; + MODULEMAP_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap"; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - A01694FE4033EE0D12213EA61212470C /* Debug */ = { + 9C08B561938F94CB1A51609AAFA8DD31 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 57BFAC23C9D9FDA42BF24BE37B9D46C6 /* SwiftyJSON.xcconfig */; + baseConfigurationReference = 8306A7A9A272343C7957802E78C8AD6D /* PromisesObjC.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8173,8 +8797,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON-Info.plist"; + INFOPLIST_FILE = "Target Support Files/PromisesObjC/PromisesObjC-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8182,22 +8805,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - PRODUCT_MODULE_NAME = SwiftyJSON; - PRODUCT_NAME = SwiftyJSON; + MODULEMAP_FILE = "Target Support Files/PromisesObjC/PromisesObjC.modulemap"; + PRODUCT_MODULE_NAME = FBLPromises; + PRODUCT_NAME = FBLPromises; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - A3BD471F01E5B43827A3A91A0F3290AD /* Release */ = { + A01694FE4033EE0D12213EA61212470C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DAC3050D3A50FD45CE5D077A49CEC1EA /* FirebaseCoreDiagnostics.xcconfig */; + baseConfigurationReference = 444FB82D62A7EFBFC2D15017F2FF2A61 /* SwiftyJSON.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8208,7 +8832,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8216,24 +8841,22 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap"; - PRODUCT_MODULE_NAME = FirebaseCoreDiagnostics; - PRODUCT_NAME = FirebaseCoreDiagnostics; + MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; + PRODUCT_MODULE_NAME = SwiftyJSON; + PRODUCT_NAME = SwiftyJSON; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - A61FA1972505928CDA1B8B40A214C371 /* Release */ = { + A39E37B2BDDE19359758E35D3253050E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F32098B1A2022AC15528F4EAE12D966 /* IQKeyboardManagerSwift.xcconfig */; + baseConfigurationReference = B8E1BF17ADD998CFAF9839AF429D8E62 /* GoogleUtilities.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8244,8 +8867,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8253,23 +8876,22 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; - PRODUCT_NAME = IQKeyboardManagerSwift; + MODULEMAP_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities.modulemap"; + PRODUCT_MODULE_NAME = GoogleUtilities; + PRODUCT_NAME = GoogleUtilities; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - A672C692E67FC4AB6351527F4811709C /* Debug */ = { + A61FA1972505928CDA1B8B40A214C371 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C09A79E74A7FB16A854BCADFE204ABD2 /* PromisesObjC.xcconfig */; + baseConfigurationReference = 8C9B0DD0FF123C5BD84926D32C0054C7 /* IQKeyboardManagerSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8280,7 +8902,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/PromisesObjC/PromisesObjC-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8288,22 +8911,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/PromisesObjC/PromisesObjC.modulemap"; - PRODUCT_MODULE_NAME = FBLPromises; - PRODUCT_NAME = FBLPromises; + MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; + PRODUCT_NAME = IQKeyboardManagerSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; A6AFDDEC125D3C2891D527BC43B7BB45 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F33847DEA2A9C88EA42F0F06E7A868E5 /* SDWebImage.xcconfig */; + baseConfigurationReference = BCA5CEC9939DB30C9FF68097315C21F9 /* SDWebImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8376,44 +9000,26 @@ }; name = Release; }; - A7FECA39E4FCB964C92C51BAFF8549B1 /* Debug */ = { + AD871CF54FACD0913D60AC873E9A64D8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2788AA39E038004180BDDEEA6F325D15 /* GoogleAPIClientForREST.xcconfig */; + baseConfigurationReference = 31A9667DF5A6155DFC5A18F4AB5E3ADF /* FirebaseMLVisionTextModel.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap"; - PRODUCT_MODULE_NAME = GoogleAPIClientForREST; - PRODUCT_NAME = GoogleAPIClientForREST; SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - AB2C916738FE1029E7525E26FB05D63D /* Debug */ = { + B150FD20F03ACAC533B01A0CE2D14433 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6BF4C86277852513762776455A3531A9 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = B849DA3C41FC58DBB5BDE4FFCE455C53 /* GoogleAPIClientForREST.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8424,99 +9030,31 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GoogleUtilities/GoogleUtilities-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/GoogleUtilities/GoogleUtilities.modulemap"; - PRODUCT_MODULE_NAME = GoogleUtilities; - PRODUCT_NAME = GoogleUtilities; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - AC6BBE129CE73AF7B9805A755DF15BAE /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D891AB31B0E8682029204C9C63F34F96 /* FirebaseMLVision.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B5EA69B2EFF8F79126E9CAA1B664BDA1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6DD79C6BD45710B578DC2FDAE3C70588 /* FirebaseMLVisionTextModel.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - BAB43F49CFC82E7C20CE5408BD9DB3C9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6DD79C6BD45710B578DC2FDAE3C70588 /* FirebaseMLVisionTextModel.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/FirebaseMLVisionTextModel"; - IBSC_MODULE = FirebaseMLVisionTextModel; - INFOPLIST_FILE = "Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PRODUCT_NAME = GoogleMVTextDetectorResources; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - BDB7E26A8ABF6455E10F7E4B63A60F0B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 249326C9D7593218704EF5F35BC508CB /* FirebaseAnalyticsInterop.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-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/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap"; + PRODUCT_MODULE_NAME = GoogleAPIClientForREST; + PRODUCT_NAME = GoogleAPIClientForREST; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - BDC27B66FAF800DA95E3045E832C153F /* Release */ = { + BA82423A21BC670EC2D7D323D492920A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C09A79E74A7FB16A854BCADFE204ABD2 /* PromisesObjC.xcconfig */; + baseConfigurationReference = 8DBC27521E04C38624327393D24FA68C /* GoogleDataTransportCCTSupport.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8527,7 +9065,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/PromisesObjC/PromisesObjC-Info.plist"; + INFOPLIST_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8535,23 +9073,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/PromisesObjC/PromisesObjC.modulemap"; - PRODUCT_MODULE_NAME = FBLPromises; - PRODUCT_NAME = FBLPromises; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.modulemap"; + PRODUCT_MODULE_NAME = GoogleDataTransportCCTSupport; + PRODUCT_NAME = GoogleDataTransportCCTSupport; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; C2DFE98C9DA571C24A48367B4264E9C6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AF38B7A656B8D28F042437914588D2E9 /* NotificationBannerSwift.xcconfig */; + baseConfigurationReference = FCFCD65F9FCF18875443EB66BCF3C6D2 /* NotificationBannerSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8585,9 +9123,9 @@ }; name = Release; }; - C56757F3ADAF92767CA4E6D5AB18D049 /* Release */ = { + C4EE06624D478926C26A18DAE15930AE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F9E33865EF0EB4B5671869FE73A0E2F /* FirebaseCore.xcconfig */; + baseConfigurationReference = 5D6DF93D700922A1ADC42A6A93543107 /* SnapKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8598,7 +9136,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseCore/FirebaseCore-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8606,14 +9145,13 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseCore/FirebaseCore.modulemap"; - PRODUCT_MODULE_NAME = FirebaseCore; - PRODUCT_NAME = FirebaseCore; + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; + PRODUCT_MODULE_NAME = SnapKit; + PRODUCT_NAME = SnapKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -8621,9 +9159,9 @@ }; name = Release; }; - C6F6B3654A4E3862C88B0E63C97CB340 /* Release */ = { + C6ED29445038EBED94F469139E0BD5D8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DDEB45702FD43D8FA986A9CCC98304A9 /* Firebase.xcconfig */; + baseConfigurationReference = A6444B634D4C3FF9BAD16B2B3C50620F /* GoogleAppMeasurement.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -8634,13 +9172,12 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - C9C43C677BC01095DEB1CF3E65C50C91 /* Debug */ = { + D0A9E879538E0DBFBB029313F8C84855 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DDEB45702FD43D8FA986A9CCC98304A9 /* Firebase.xcconfig */; + baseConfigurationReference = A6444B634D4C3FF9BAD16B2B3C50620F /* GoogleAppMeasurement.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -8651,39 +9188,45 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - C9D6E545A285A6DE7765D56A31DC97ED /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6DD79C6BD45710B578DC2FDAE3C70588 /* FirebaseMLVisionTextModel.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/FirebaseMLVisionTextModel"; - IBSC_MODULE = FirebaseMLVisionTextModel; - INFOPLIST_FILE = "Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PRODUCT_NAME = GoogleMVTextDetectorResources; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; }; name = Release; }; - D28EBD1F1E7620DE86D6A7D3849001B7 /* Debug */ = { + D6984877C0FEBD27A1325DE7061442E2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6DD79C6BD45710B578DC2FDAE3C70588 /* FirebaseMLVisionTextModel.xcconfig */; + baseConfigurationReference = 853E26053E0F37133D37E03C471A7710 /* Pods-FoodScan.debug.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-FoodScan/Pods-FoodScan-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", + "@loader_path/Frameworks", ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-FoodScan/Pods-FoodScan.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; + SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; @@ -8726,9 +9269,43 @@ }; name = Release; }; + DC6CEDA2552795161411FDCFBF612017 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8306A7A9A272343C7957802E78C8AD6D /* PromisesObjC.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/PromisesObjC/PromisesObjC-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/PromisesObjC/PromisesObjC.modulemap"; + PRODUCT_MODULE_NAME = FBLPromises; + PRODUCT_NAME = FBLPromises; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; DD039E802F24E5ADA372694B29D3B3F8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 00C708B92EF46243BE1B545E47CF4B95 /* Cosmos.xcconfig */; + baseConfigurationReference = D435FF46BAF7B2A3A6F394B2334BC853 /* Cosmos.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8825,9 +9402,9 @@ }; name = Debug; }; - DE80ECA4BA4D40163780A6C986525379 /* Release */ = { + DF4627D75987130EB5BF14A127F7DFB4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8F5ABFD6F8F732B49A94525D6B224699 /* GTMSessionFetcher.xcconfig */; + baseConfigurationReference = 6E54F7A0A7420003D834F95671AB5919 /* FirebaseCore.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8838,8 +9415,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseCore/FirebaseCore-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8847,9 +9423,45 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher.modulemap"; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/FirebaseCore/FirebaseCore.modulemap"; + PRODUCT_MODULE_NAME = FirebaseCore; + PRODUCT_NAME = FirebaseCore; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + E344CC888AC899CE30541A5BAA461AF8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B849DA3C41FC58DBB5BDE4FFCE455C53 /* GoogleAPIClientForREST.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-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/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap"; + PRODUCT_MODULE_NAME = GoogleAPIClientForREST; + PRODUCT_NAME = GoogleAPIClientForREST; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -8861,9 +9473,9 @@ }; name = Release; }; - E0E47EB6F31E899F807E6EEE0088786D /* Release */ = { + E36938501955CCC5C20C40BA354E9126 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F9D59C37CCC0BA64ACC04B13DCD941A /* FirebaseMLCommon.xcconfig */; + baseConfigurationReference = DC39B25FAAC0E01533E78ED735D0EFE2 /* FirebaseMLVision.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -8878,9 +9490,9 @@ }; name = Release; }; - EA131F696EC4AACCC7BB1121A158EB68 /* Debug */ = { + E7DACD7301C036C194C3F334EA4791F2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1488555ACB4273A4F0AF2E780589ABF6 /* Popover.xcconfig */; + baseConfigurationReference = 630F25B88555F922422BA2905EF3707C /* nanopb.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8891,8 +9503,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Popover/Popover-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Popover/Popover-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/nanopb/nanopb-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8900,21 +9512,23 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Popover/Popover.modulemap"; - PRODUCT_MODULE_NAME = Popover; - PRODUCT_NAME = Popover; + MODULEMAP_FILE = "Target Support Files/nanopb/nanopb.modulemap"; + PRODUCT_MODULE_NAME = nanopb; + PRODUCT_NAME = nanopb; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - EB13E8A3329318B3184D3D8B4A8AABEC /* Debug */ = { + EA131F696EC4AACCC7BB1121A158EB68 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 762E9155A1063DDA02AE680D8AF80FDE /* FirebaseInstallations.xcconfig */; + baseConfigurationReference = 822D9EF4AC2FE242E04C7422533D6D39 /* Popover.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8925,7 +9539,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Popover/Popover-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Popover/Popover-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8933,23 +9548,21 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap"; - PRODUCT_MODULE_NAME = FirebaseInstallations; - PRODUCT_NAME = FirebaseInstallations; + MODULEMAP_FILE = "Target Support Files/Popover/Popover.modulemap"; + PRODUCT_MODULE_NAME = Popover; + PRODUCT_NAME = Popover; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - EB60D281635E615168804E99216A9A48 /* Debug */ = { + F284E7657129AC1B999339E51A311520 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DAC3050D3A50FD45CE5D077A49CEC1EA /* FirebaseCoreDiagnostics.xcconfig */; + baseConfigurationReference = 439B296ECDD7432AE7F81F84F5D319AA /* FirebaseInstanceID.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -8960,7 +9573,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist"; + INFOPLIST_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -8969,9 +9582,9 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap"; - PRODUCT_MODULE_NAME = FirebaseCoreDiagnostics; - PRODUCT_NAME = FirebaseCoreDiagnostics; + MODULEMAP_FILE = "Target Support Files/FirebaseInstanceID/FirebaseInstanceID.modulemap"; + PRODUCT_MODULE_NAME = FirebaseInstanceID; + PRODUCT_NAME = FirebaseInstanceID; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -8982,58 +9595,66 @@ }; name = Debug; }; - EDC889E5FB983E83F50AB5C7A477BA91 /* Debug */ = { + FAFE5F6DD9F3C233C8F0844CC9ECF4D4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C2B808561A83CD24DDDA3C1579199BBC /* GoogleDataTransportCCTSupport.xcconfig */; + baseConfigurationReference = E3D2382BEDB9915DD87E32A0F8EF5D38 /* FirebaseAnalytics.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.modulemap"; - PRODUCT_MODULE_NAME = GoogleDataTransportCCTSupport; - PRODUCT_NAME = GoogleDataTransportCCTSupport; SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; }; name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 02D7694EB080CF42C858728AAD66C0BC /* Build configuration list for PBXNativeTarget "nanopb" */ = { + 0057AF3800912CA351917CB422E82170 /* Build configuration list for PBXAggregateTarget "FirebaseMLCommon" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 814D97291ADF5683A633A26D53E8FC08 /* Debug */, + 586BD357CE1348A333DC5B6998F18402 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0DCC494BF14EEA1CF3093D636403315A /* Build configuration list for PBXNativeTarget "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2CFF940BE24626A0D6AFAAF88D5F3B73 /* Debug */, + 78B8EFD428576987C54C800B45B62964 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 161673B79AA04CBB1E22901873676B31 /* Build configuration list for PBXAggregateTarget "FirebaseMLVision" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9E8835D38411CE5A68327A6A6F90FE8B /* Debug */, - 9D5B997D4E1498393B8FA3BAC1149C78 /* Release */, + 3B4760922E0D009552052C83537108F0 /* Debug */, + E36938501955CCC5C20C40BA354E9126 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 23A8CB771320ED6B633D4DA95ECC9900 /* Build configuration list for PBXAggregateTarget "FirebaseMLCommon" */ = { + 16FB06BA9CA3339C32B686430DD62154 /* Build configuration list for PBXNativeTarget "GoogleAPIClientForREST" */ = { isa = XCConfigurationList; buildConfigurations = ( - 62CF5FA83EC6BB2AA2B70D5CD7B1CCB8 /* Debug */, - E0E47EB6F31E899F807E6EEE0088786D /* Release */, + B150FD20F03ACAC533B01A0CE2D14433 /* Debug */, + E344CC888AC899CE30541A5BAA461AF8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1B4339A7E4E757AE4F4BB015FE149584 /* Build configuration list for PBXAggregateTarget "FirebaseMLVisionTextModel" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 25A31A94858B39C57961B6A606922BFC /* Debug */, + AD871CF54FACD0913D60AC873E9A64D8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9047,11 +9668,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2AA16AD438D0C180DF37010E9A376C87 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */ = { + 265B9F58322941CCA42DFCF73A54630A /* Build configuration list for PBXNativeTarget "GoogleDataTransportCCTSupport" */ = { isa = XCConfigurationList; buildConfigurations = ( - AB2C916738FE1029E7525E26FB05D63D /* Debug */, - 80553051802108FDF4A702D4C91B0C72 /* Release */, + BA82423A21BC670EC2D7D323D492920A /* Debug */, + 8DDCBCBC5B0A0582A8ECEA1E9414783E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9074,15 +9695,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 47A99EB7F89BBC2A6762F2D4D2AFED6B /* Build configuration list for PBXNativeTarget "FirebaseInstallations" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EB13E8A3329318B3184D3D8B4A8AABEC /* Debug */, - 16F3ADA0F11941F62E05330E0F3B1016 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -9092,20 +9704,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 51F8B615680F01F193ED43CC441DD736 /* Build configuration list for PBXAggregateTarget "Firebase" */ = { + 53CD17FD818A2654347BF8526FB00DED /* Build configuration list for PBXNativeTarget "nanopb" */ = { isa = XCConfigurationList; buildConfigurations = ( - C9C43C677BC01095DEB1CF3E65C50C91 /* Debug */, - C6F6B3654A4E3862C88B0E63C97CB340 /* Release */, + 1B92C46BC17F5E0B095B879D8BB7B054 /* Debug */, + E7DACD7301C036C194C3F334EA4791F2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5B6EC06B0CCFA258F4AA098B125305CC /* Build configuration list for PBXAggregateTarget "FirebaseMLVisionTextModel" */ = { + 55427FA3DF46D850EF14DD5FF65D5214 /* Build configuration list for PBXNativeTarget "GoogleDataTransport" */ = { isa = XCConfigurationList; buildConfigurations = ( - D28EBD1F1E7620DE86D6A7D3849001B7 /* Debug */, - B5EA69B2EFF8F79126E9CAA1B664BDA1 /* Release */, + 6690815594385F7B8D8567DB267E6EA1 /* Debug */, + 16B11BAB003CAA0186473E3BA5FCEAB7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9119,15 +9731,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5DBD2CBF68BEB0C90D1BA272E38F144D /* Build configuration list for PBXAggregateTarget "FirebaseCoreDiagnosticsInterop" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 53BC2EF0F659DDBFC5B46AD25601B427 /* Debug */, - 3CA4C2A9FAED888280930C00BB18878F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 62468BF9C7EDA172E951A24083C3ECA7 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -9137,29 +9740,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 70B80A11D9217C4413A9460E6A45F312 /* Build configuration list for PBXNativeTarget "GoogleDataTransportCCTSupport" */ = { + 64CD42B74C368FF94373FF081222444D /* Build configuration list for PBXNativeTarget "Protobuf" */ = { isa = XCConfigurationList; buildConfigurations = ( - EDC889E5FB983E83F50AB5C7A477BA91 /* Debug */, - 03C859817B7FAE82ED6589271118D77E /* Release */, + 2F7F80EEC86EE5E847DF8AA46811DFF3 /* Debug */, + 53D62843308F3C45585C1FA02372ED93 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 73C33EF8C727F1BDE6C6AF0A4A3E5B81 /* Build configuration list for PBXNativeTarget "Protobuf" */ = { + 6743550A2728FF0005D5D949F05BAEB0 /* Build configuration list for PBXNativeTarget "PromisesObjC" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0EED7B5952B625CFBB5DE45CC3A4F11C /* Debug */, - 41E01C837B5F64B7EB231121F4743017 /* Release */, + DC6CEDA2552795161411FDCFBF612017 /* Debug */, + 9C08B561938F94CB1A51609AAFA8DD31 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8F71C886E2770F4B4C0E580B17013ACC /* Build configuration list for PBXNativeTarget "FirebaseCoreDiagnostics" */ = { + 820F019EC246F86111E74E378949567E /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */ = { isa = XCConfigurationList; buildConfigurations = ( - EB60D281635E615168804E99216A9A48 /* Debug */, - A3BD471F01E5B43827A3A91A0F3290AD /* Release */, + 77A5FBD8C3F09AA5044E6303FD0AF5A4 /* Debug */, + 97AF735A13622EC5C291CE5E2CC88DA0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9173,20 +9776,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 91B5A6735CBB71E3B66613923364759F /* Build configuration list for PBXNativeTarget "FirebaseMLVisionTextModel-GoogleMVTextDetectorResources" */ = { + 91F73F4638C44826B38EFC1A70698C73 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */ = { isa = XCConfigurationList; buildConfigurations = ( - BAB43F49CFC82E7C20CE5408BD9DB3C9 /* Debug */, - C9D6E545A285A6DE7765D56A31DC97ED /* Release */, + 8691029B5092F155992C889C981AE2DF /* Debug */, + 2675B1896D8551FDFE028642207C0488 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9BEE346B25D24680D681EC825FF79E3B /* Build configuration list for PBXAggregateTarget "FirebaseMLVision" */ = { + 955BB0450ACD981A8189C5E5E3CFBB66 /* Build configuration list for PBXNativeTarget "FirebaseCoreDiagnostics" */ = { isa = XCConfigurationList; buildConfigurations = ( - 847FA2DDC126E4A604C0B221EB8098E1 /* Debug */, - AC6BBE129CE73AF7B9805A755DF15BAE /* Release */, + 4652495A12C361D9299A514F89B1FA87 /* Debug */, + 3614E2B72D5AA868A13B0478CE05C0A9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9200,65 +9803,65 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - ACB3C4D35F41C77195BF9C6B5BCAB59B /* Build configuration list for PBXNativeTarget "SnapKit" */ = { + 9E7B4E8C259478E2998E0A432A4F432F /* Build configuration list for PBXNativeTarget "FirebaseCrashlytics" */ = { isa = XCConfigurationList; buildConfigurations = ( - 192CC0537E6EF22B08736F8676512A57 /* Debug */, - 101B7E5D124C0B531E75583658479615 /* Release */, + 1AAD4C2029F86FC5EF33FDA760B7A330 /* Debug */, + 75E173E822BF7BDA2B53FD5D65075BD8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AFDCDB9649965A4857F97CDAC7F63524 /* Build configuration list for PBXNativeTarget "FirebaseCrashlytics" */ = { + A15FBA602532F7B8EA066087F79A63E7 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */ = { isa = XCConfigurationList; buildConfigurations = ( - 11C20DA8ECC67E6A0DF5807790C98128 /* Debug */, - 536E2F109779DAB6605163E24EC2AFAB /* Release */, + A39E37B2BDDE19359758E35D3253050E /* Debug */, + 72F73AB5AC90EA7645B681AEF36142C3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B8BEE5E64FA4F96A6BF87FDA533BB5C0 /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */ = { + BE572A4A25A0CEAD79EF28CF9816E9CB /* Build configuration list for PBXNativeTarget "Pods-FoodScan" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7164A4710242941DA7CD475BC22167A5 /* Debug */, - DE80ECA4BA4D40163780A6C986525379 /* Release */, + D6984877C0FEBD27A1325DE7061442E2 /* Debug */, + 38231AF0C59CCC0F135E2249400691F7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B97953EEDAD925CD2AF043ADB8ABAC6F /* Build configuration list for PBXNativeTarget "GoogleDataTransport" */ = { + C1613797DD71EC294C39987C609BA161 /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3C60975BD46B782294D00943C129A95C /* Debug */, - 207E4AE6916456D7ED3BA054C3108F8E /* Release */, + F284E7657129AC1B999339E51A311520 /* Debug */, + 47E465DBADE65FF8EC7839B1D8586FBD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BA768AC0AF0F2C150F0E6488EBC993E3 /* Build configuration list for PBXNativeTarget "PromisesObjC" */ = { + D1E2A6845795091CE930F68D80DF9076 /* Build configuration list for PBXAggregateTarget "FirebaseAnalytics" */ = { isa = XCConfigurationList; buildConfigurations = ( - A672C692E67FC4AB6351527F4811709C /* Debug */, - BDC27B66FAF800DA95E3045E832C153F /* Release */, + FAFE5F6DD9F3C233C8F0844CC9ECF4D4 /* Debug */, + 66E69441F47A2B25B9C879BE8D7EB813 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C1798E9E9BC8A11EB7ACFC2AABE56123 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */ = { + D3578FCADC3A3BD0240FC5A3466D57B3 /* Build configuration list for PBXNativeTarget "FirebaseCore" */ = { isa = XCConfigurationList; buildConfigurations = ( - 08BAB76A118EBDF46C1E84117EDCD460 /* Debug */, - 155409A4D74A6C19BD650144F8551ADC /* Release */, + DF4627D75987130EB5BF14A127F7DFB4 /* Debug */, + 1206BE2E09F9693BBC7FA2388EF59C7E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D757E239B053B2DED3C2B79C146D35C5 /* Build configuration list for PBXNativeTarget "FirebaseCore" */ = { + DBAA82024243128E2D76FD693647727C /* Build configuration list for PBXNativeTarget "FirebaseInstallations" */ = { isa = XCConfigurationList; buildConfigurations = ( - 84DB22D49B2C180074829223CD661A09 /* Debug */, - C56757F3ADAF92767CA4E6D5AB18D049 /* Release */, + 6DB672DEBB26FBE6CACD5864D3718E87 /* Debug */, + 67F77C15B6C98642764D164AB269147F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9281,20 +9884,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EC53BC4CFF9A7908CA393E1C0589BA05 /* Build configuration list for PBXNativeTarget "GoogleAPIClientForREST" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A7FECA39E4FCB964C92C51BAFF8549B1 /* Debug */, - 2600FA2E95A17A82DA31306BB3096667 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EDE57FFF339FE19147AEF8ED2EE7F606 /* Build configuration list for PBXAggregateTarget "FirebaseAnalyticsInterop" */ = { + E73D73B1A2975C343375C8E5D164941D /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */ = { isa = XCConfigurationList; buildConfigurations = ( - 897CCF9AB7A1E19EAA2A6EE79BDA4EE0 /* Debug */, - BDB7E26A8ABF6455E10F7E4B63A60F0B /* Release */, + C6ED29445038EBED94F469139E0BD5D8 /* Debug */, + D0A9E879538E0DBFBB029313F8C84855 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9317,20 +9911,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F2DA19E929AF19DBEBE2FDC7D57D8036 /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */ = { + F7F0CFEF6216AF5BA0DD300F37633B56 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4A0C5CF8827FE80133587386F9942884 /* Debug */, - 127E6ED428FD11FADE60A2F914198F5F /* Release */, + 1C669A60F3C3A47A26C0AA1CAC5E322A /* Debug */, + C4EE06624D478926C26A18DAE15930AE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F6A0C8680AB9536A74B6D850E90608F5 /* Build configuration list for PBXNativeTarget "Pods-FoodScan" */ = { + F8ACEB5E4B59C8FAC9DA766576D60055 /* Build configuration list for PBXAggregateTarget "Firebase" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3B7A2185A0A5582F66BE479172A09177 /* Debug */, - 96F475CEA27426DA594A597AC9E78EC8 /* Release */, + 4318B500EAC17F82023EEC17F46497FD /* Debug */, + 7828F8FA0597E598952813DCA9D5FC25 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m b/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m index 27e8e6c..33d3536 100644 --- a/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m +++ b/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m @@ -40,7 +40,6 @@ @implementation FBLPromise (TestingAdditions) @dynamic isPending; @dynamic isFulfilled; @dynamic isRejected; -@dynamic pendingObjects; @dynamic value; @dynamic error; diff --git a/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m b/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m index 0837b04..c12ad32 100644 --- a/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m +++ b/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m @@ -191,14 +191,16 @@ - (NSError *__nullable)error { } } -- (NSMutableSet *__nullable)pendingObjects { +- (void)addPendingObject:(id)object { + NSParameterAssert(object); + @synchronized(self) { if (_state == FBLPromiseStatePending) { if (!_pendingObjects) { _pendingObjects = [[NSMutableSet alloc] init]; } + [_pendingObjects addObject:object]; } - return _pendingObjects; } } diff --git a/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h b/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h index 07a65ec..8478ae2 100644 --- a/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h +++ b/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h @@ -40,12 +40,6 @@ FOUNDATION_EXTERN BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) NS_ @property(nonatomic, readonly) BOOL isFulfilled NS_REFINED_FOR_SWIFT; @property(nonatomic, readonly) BOOL isRejected NS_REFINED_FOR_SWIFT; -/** - Set of arbitrary objects to keep strongly while the promise is pending. - Becomes nil after the promise has been resolved. - */ -@property(nonatomic, readonly, nullable) NSMutableSet *pendingObjects NS_REFINED_FOR_SWIFT; - /** Value the promise was fulfilled with. Can be nil if the promise is still pending, was resolved with nil or after it has been rejected. diff --git a/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h b/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h index cec6336..b1380dc 100644 --- a/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h +++ b/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h @@ -57,6 +57,17 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)new NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE; +@end + +@interface FBLPromise() + +/** + Adds an object to the set of pending objects to keep strongly while the promise is pending. + Used by the Swift wrappers to keep them alive until the underlying ObjC promise is resolved. + + @param object An object to add. + */ +- (void)addPendingObject:(id)object NS_REFINED_FOR_SWIFT; @end diff --git a/Pods/Protobuf/README.md b/Pods/Protobuf/README.md index 0e5ae61..2f42c6c 100644 --- a/Pods/Protobuf/README.md +++ b/Pods/Protobuf/README.md @@ -56,7 +56,7 @@ how to install protobuf runtime for that specific language: |--------------------------------------|-------------------------------------------------------------|--------|-------|---------| | C++ (include C++ runtime and protoc) | [src](src) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-cpp_distcheck.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fcpp_distcheck%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-bazel.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fbazel%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-dist_install.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fdist_install%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fcpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-cpp_distcheck.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fcpp_distcheck%2Fcontinuous) | [![Build status](https://ci.appveyor.com/api/projects/status/73ctee6ua4w2ruin?svg=true)](https://ci.appveyor.com/project/protobuf/protobuf) | | Java | [java](java) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-java_compatibility.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjava_compatibility%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-java_jdk7.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjava_jdk7%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-java_oracle7.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjava_oracle7%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-java_linkage_monitor.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjava_linkage_monitor%2Fcontinuous) | | | -| Python | [python](python) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python27.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython27%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python33.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython33%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python34.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython34%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python35.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython35%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python36.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython36%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python37.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython37%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python_compatibility.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython_compatibility%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python27_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython27_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python33_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython33_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python34_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython34_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python35_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython35_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python36_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython36_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python37_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython37_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython_release%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython_release%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/windows-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fwindows%2Fpython_release%2Fcontinuous) | +| Python | [python](python) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python27.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython27%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python35.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython35%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python36.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython36%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python37.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython37%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python_compatibility.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython_compatibility%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python27_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython27_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python35_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython35_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python36_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython36_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python37_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython37_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython_release%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython_release%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/windows-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fwindows%2Fpython_release%2Fcontinuous) | | Objective-C | [objectivec](objectivec) | | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_cocoapods_integration.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_cocoapods_integration%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_ios_debug.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_ios_debug%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_ios_release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_ios_release%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_osx.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_osx%2Fcontinuous) | | | C# | [csharp](csharp) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-csharp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fcsharp%2Fcontinuous) | | [![Build status](https://ci.appveyor.com/api/projects/status/73ctee6ua4w2ruin?svg=true)](https://ci.appveyor.com/project/protobuf/protobuf)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/windows-csharp-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fwindows%2Fcsharp_release%2Fcontinuous) | | JavaScript | [js](js) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-javascript.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjavascript%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-javascript.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fjavascript%2Fcontinuous) | | diff --git a/Pods/Protobuf/objectivec/GPBAny.pbobjc.h b/Pods/Protobuf/objectivec/GPBAny.pbobjc.h new file mode 100644 index 0000000..288d552 --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBAny.pbobjc.h @@ -0,0 +1,183 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/any.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBAnyRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBAnyRoot : GPBRootObject +@end + +#pragma mark - GPBAny + +typedef GPB_ENUM(GPBAny_FieldNumber) { + GPBAny_FieldNumber_TypeURL = 1, + GPBAny_FieldNumber_Value = 2, +}; + +/** + * `Any` contains an arbitrary serialized protocol buffer message along with a + * URL that describes the type of the serialized message. + * + * Protobuf library provides support to pack/unpack Any values in the form + * of utility functions or additional generated methods of the Any type. + * + * Example 1: Pack and unpack a message in C++. + * + * Foo foo = ...; + * Any any; + * any.PackFrom(foo); + * ... + * if (any.UnpackTo(&foo)) { + * ... + * } + * + * Example 2: Pack and unpack a message in Java. + * + * Foo foo = ...; + * Any any = Any.pack(foo); + * ... + * if (any.is(Foo.class)) { + * foo = any.unpack(Foo.class); + * } + * + * Example 3: Pack and unpack a message in Python. + * + * foo = Foo(...) + * any = Any() + * any.Pack(foo) + * ... + * if any.Is(Foo.DESCRIPTOR): + * any.Unpack(foo) + * ... + * + * Example 4: Pack and unpack a message in Go + * + * foo := &pb.Foo{...} + * any, err := ptypes.MarshalAny(foo) + * ... + * foo := &pb.Foo{} + * if err := ptypes.UnmarshalAny(any, foo); err != nil { + * ... + * } + * + * The pack methods provided by protobuf library will by default use + * 'type.googleapis.com/full.type.name' as the type URL and the unpack + * methods only use the fully qualified type name after the last '/' + * in the type URL, for example "foo.bar.com/x/y.z" will yield type + * name "y.z". + * + * + * JSON + * ==== + * The JSON representation of an `Any` value uses the regular + * representation of the deserialized, embedded message, with an + * additional field `\@type` which contains the type URL. Example: + * + * package google.profile; + * message Person { + * string first_name = 1; + * string last_name = 2; + * } + * + * { + * "\@type": "type.googleapis.com/google.profile.Person", + * "firstName": , + * "lastName": + * } + * + * If the embedded message type is well-known and has a custom JSON + * representation, that representation will be embedded adding a field + * `value` which holds the custom JSON in addition to the `\@type` + * field. Example (for message [google.protobuf.Duration][]): + * + * { + * "\@type": "type.googleapis.com/google.protobuf.Duration", + * "value": "1.212s" + * } + **/ +GPB_FINAL @interface GPBAny : GPBMessage + +/** + * A URL/resource name that uniquely identifies the type of the serialized + * protocol buffer message. This string must contain at least + * one "/" character. The last segment of the URL's path must represent + * the fully qualified name of the type (as in + * `path/google.protobuf.Duration`). The name should be in a canonical form + * (e.g., leading "." is not accepted). + * + * In practice, teams usually precompile into the binary all types that they + * expect it to use in the context of Any. However, for URLs which use the + * scheme `http`, `https`, or no scheme, one can optionally set up a type + * server that maps type URLs to message definitions as follows: + * + * * If no scheme is provided, `https` is assumed. + * * An HTTP GET on the URL must yield a [google.protobuf.Type][] + * value in binary format, or produce an error. + * * Applications are allowed to cache lookup results based on the + * URL, or have them precompiled into a binary to avoid any + * lookup. Therefore, binary compatibility needs to be preserved + * on changes to types. (Use versioned type names to manage + * breaking changes.) + * + * Note: this functionality is not currently available in the official + * protobuf release, and it is not used for type URLs beginning with + * type.googleapis.com. + * + * Schemes other than `http`, `https` (or the empty scheme) might be + * used with implementation specific semantics. + **/ +@property(nonatomic, readwrite, copy, null_resettable) NSString *typeURL; + +/** Must be a valid serialized protocol buffer of the above specified type. */ +@property(nonatomic, readwrite, copy, null_resettable) NSData *value; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.m b/Pods/Protobuf/objectivec/GPBAny.pbobjc.m similarity index 86% rename from Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.m rename to Pods/Protobuf/objectivec/GPBAny.pbobjc.m index f1e815f..a5143f1 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBAny.pbobjc.m @@ -8,15 +8,15 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/Any.pbobjc.h" + #import "GPBAny.pbobjc.h" #endif // @@protoc_insertion_point(imports) @@ -68,20 +68,20 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "typeURL", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBAny_FieldNumber_TypeURL, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBAny__storage_, typeURL), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBAny_FieldNumber_Value, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBAny__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeBytes, }, }; @@ -92,7 +92,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBAny__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS static const char *extraTextFormatInfo = "\001\001\004\241!!\000"; diff --git a/Pods/Protobuf/objectivec/GPBApi.pbobjc.h b/Pods/Protobuf/objectivec/GPBApi.pbobjc.h new file mode 100644 index 0000000..287c051 --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBApi.pbobjc.h @@ -0,0 +1,311 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/api.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +@class GPBMethod; +@class GPBMixin; +@class GPBOption; +@class GPBSourceContext; +GPB_ENUM_FWD_DECLARE(GPBSyntax); + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBApiRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBApiRoot : GPBRootObject +@end + +#pragma mark - GPBApi + +typedef GPB_ENUM(GPBApi_FieldNumber) { + GPBApi_FieldNumber_Name = 1, + GPBApi_FieldNumber_MethodsArray = 2, + GPBApi_FieldNumber_OptionsArray = 3, + GPBApi_FieldNumber_Version = 4, + GPBApi_FieldNumber_SourceContext = 5, + GPBApi_FieldNumber_MixinsArray = 6, + GPBApi_FieldNumber_Syntax = 7, +}; + +/** + * Api is a light-weight descriptor for an API Interface. + * + * Interfaces are also described as "protocol buffer services" in some contexts, + * such as by the "service" keyword in a .proto file, but they are different + * from API Services, which represent a concrete implementation of an interface + * as opposed to simply a description of methods and bindings. They are also + * sometimes simply referred to as "APIs" in other contexts, such as the name of + * this message itself. See https://cloud.google.com/apis/design/glossary for + * detailed terminology. + **/ +GPB_FINAL @interface GPBApi : GPBMessage + +/** + * The fully qualified name of this interface, including package name + * followed by the interface's simple name. + **/ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** The methods of this interface, in unspecified order. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *methodsArray; +/** The number of items in @c methodsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger methodsArray_Count; + +/** Any metadata attached to the interface. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; +/** The number of items in @c optionsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger optionsArray_Count; + +/** + * A version string for this interface. If specified, must have the form + * `major-version.minor-version`, as in `1.10`. If the minor version is + * omitted, it defaults to zero. If the entire version field is empty, the + * major version is derived from the package name, as outlined below. If the + * field is not empty, the version in the package name will be verified to be + * consistent with what is provided here. + * + * The versioning schema uses [semantic + * versioning](http://semver.org) where the major version number + * indicates a breaking change and the minor version an additive, + * non-breaking change. Both version numbers are signals to users + * what to expect from different versions, and should be carefully + * chosen based on the product plan. + * + * The major version is also reflected in the package name of the + * interface, which must end in `v`, as in + * `google.feature.v1`. For major versions 0 and 1, the suffix can + * be omitted. Zero major versions must only be used for + * experimental, non-GA interfaces. + **/ +@property(nonatomic, readwrite, copy, null_resettable) NSString *version; + +/** + * Source context for the protocol buffer service represented by this + * message. + **/ +@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext; +/** Test to see if @c sourceContext has been set. */ +@property(nonatomic, readwrite) BOOL hasSourceContext; + +/** Included interfaces. See [Mixin][]. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *mixinsArray; +/** The number of items in @c mixinsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger mixinsArray_Count; + +/** The source syntax of the service. */ +@property(nonatomic, readwrite) enum GPBSyntax syntax; + +@end + +/** + * Fetches the raw value of a @c GPBApi's @c syntax property, even + * if the value was not defined by the enum at the time the code was generated. + **/ +int32_t GPBApi_Syntax_RawValue(GPBApi *message); +/** + * Sets the raw value of an @c GPBApi's @c syntax property, allowing + * it to be set to a value that was not defined by the enum at the time the code + * was generated. + **/ +void SetGPBApi_Syntax_RawValue(GPBApi *message, int32_t value); + +#pragma mark - GPBMethod + +typedef GPB_ENUM(GPBMethod_FieldNumber) { + GPBMethod_FieldNumber_Name = 1, + GPBMethod_FieldNumber_RequestTypeURL = 2, + GPBMethod_FieldNumber_RequestStreaming = 3, + GPBMethod_FieldNumber_ResponseTypeURL = 4, + GPBMethod_FieldNumber_ResponseStreaming = 5, + GPBMethod_FieldNumber_OptionsArray = 6, + GPBMethod_FieldNumber_Syntax = 7, +}; + +/** + * Method represents a method of an API interface. + **/ +GPB_FINAL @interface GPBMethod : GPBMessage + +/** The simple name of this method. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** A URL of the input message type. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *requestTypeURL; + +/** If true, the request is streamed. */ +@property(nonatomic, readwrite) BOOL requestStreaming; + +/** The URL of the output message type. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *responseTypeURL; + +/** If true, the response is streamed. */ +@property(nonatomic, readwrite) BOOL responseStreaming; + +/** Any metadata attached to the method. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; +/** The number of items in @c optionsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger optionsArray_Count; + +/** The source syntax of this method. */ +@property(nonatomic, readwrite) enum GPBSyntax syntax; + +@end + +/** + * Fetches the raw value of a @c GPBMethod's @c syntax property, even + * if the value was not defined by the enum at the time the code was generated. + **/ +int32_t GPBMethod_Syntax_RawValue(GPBMethod *message); +/** + * Sets the raw value of an @c GPBMethod's @c syntax property, allowing + * it to be set to a value that was not defined by the enum at the time the code + * was generated. + **/ +void SetGPBMethod_Syntax_RawValue(GPBMethod *message, int32_t value); + +#pragma mark - GPBMixin + +typedef GPB_ENUM(GPBMixin_FieldNumber) { + GPBMixin_FieldNumber_Name = 1, + GPBMixin_FieldNumber_Root = 2, +}; + +/** + * Declares an API Interface to be included in this interface. The including + * interface must redeclare all the methods from the included interface, but + * documentation and options are inherited as follows: + * + * - If after comment and whitespace stripping, the documentation + * string of the redeclared method is empty, it will be inherited + * from the original method. + * + * - Each annotation belonging to the service config (http, + * visibility) which is not set in the redeclared method will be + * inherited. + * + * - If an http annotation is inherited, the path pattern will be + * modified as follows. Any version prefix will be replaced by the + * version of the including interface plus the [root][] path if + * specified. + * + * Example of a simple mixin: + * + * package google.acl.v1; + * service AccessControl { + * // Get the underlying ACL object. + * rpc GetAcl(GetAclRequest) returns (Acl) { + * option (google.api.http).get = "/v1/{resource=**}:getAcl"; + * } + * } + * + * package google.storage.v2; + * service Storage { + * rpc GetAcl(GetAclRequest) returns (Acl); + * + * // Get a data record. + * rpc GetData(GetDataRequest) returns (Data) { + * option (google.api.http).get = "/v2/{resource=**}"; + * } + * } + * + * Example of a mixin configuration: + * + * apis: + * - name: google.storage.v2.Storage + * mixins: + * - name: google.acl.v1.AccessControl + * + * The mixin construct implies that all methods in `AccessControl` are + * also declared with same name and request/response types in + * `Storage`. A documentation generator or annotation processor will + * see the effective `Storage.GetAcl` method after inherting + * documentation and annotations as follows: + * + * service Storage { + * // Get the underlying ACL object. + * rpc GetAcl(GetAclRequest) returns (Acl) { + * option (google.api.http).get = "/v2/{resource=**}:getAcl"; + * } + * ... + * } + * + * Note how the version in the path pattern changed from `v1` to `v2`. + * + * If the `root` field in the mixin is specified, it should be a + * relative path under which inherited HTTP paths are placed. Example: + * + * apis: + * - name: google.storage.v2.Storage + * mixins: + * - name: google.acl.v1.AccessControl + * root: acls + * + * This implies the following inherited HTTP annotation: + * + * service Storage { + * // Get the underlying ACL object. + * rpc GetAcl(GetAclRequest) returns (Acl) { + * option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; + * } + * ... + * } + **/ +GPB_FINAL @interface GPBMixin : GPBMessage + +/** The fully qualified name of the interface which is included. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** + * If non-empty specifies a path under which inherited HTTP paths + * are rooted. + **/ +@property(nonatomic, readwrite, copy, null_resettable) NSString *root; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Api.pbobjc.m b/Pods/Protobuf/objectivec/GPBApi.pbobjc.m similarity index 78% rename from Pods/Protobuf/objectivec/google/protobuf/Api.pbobjc.m rename to Pods/Protobuf/objectivec/GPBApi.pbobjc.m index 4102399..5915ce1 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Api.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBApi.pbobjc.m @@ -8,24 +8,34 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import + #import + #import + #import #else - #import "google/protobuf/Api.pbobjc.h" - #import "google/protobuf/SourceContext.pbobjc.h" - #import "google/protobuf/Type.pbobjc.h" + #import "GPBApi.pbobjc.h" + #import "GPBSourceContext.pbobjc.h" + #import "GPBType.pbobjc.h" #endif // @@protoc_insertion_point(imports) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#pragma mark - Objective C Class declarations +// Forward declarations of Objective C classes that we can use as +// static values in struct initializers. +// We don't use [Foo class] because it is not a static value. +GPBObjCClassDeclaration(GPBMethod); +GPBObjCClassDeclaration(GPBMixin); +GPBObjCClassDeclaration(GPBOption); +GPBObjCClassDeclaration(GPBSourceContext); #pragma mark - GPBApiRoot @@ -82,16 +92,16 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBApi_FieldNumber_Name, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBApi__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "methodsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBMethod), + .dataTypeSpecific.clazz = GPBObjCClass(GPBMethod), .number = GPBApi_FieldNumber_MethodsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBApi__storage_, methodsArray), @@ -100,7 +110,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "optionsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBOption), + .dataTypeSpecific.clazz = GPBObjCClass(GPBOption), .number = GPBApi_FieldNumber_OptionsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBApi__storage_, optionsArray), @@ -109,16 +119,16 @@ + (GPBDescriptor *)descriptor { }, { .name = "version", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBApi_FieldNumber_Version, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBApi__storage_, version), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "sourceContext", - .dataTypeSpecific.className = GPBStringifySymbol(GPBSourceContext), + .dataTypeSpecific.clazz = GPBObjCClass(GPBSourceContext), .number = GPBApi_FieldNumber_SourceContext, .hasIndex = 2, .offset = (uint32_t)offsetof(GPBApi__storage_, sourceContext), @@ -127,7 +137,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "mixinsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBMixin), + .dataTypeSpecific.clazz = GPBObjCClass(GPBMixin), .number = GPBApi_FieldNumber_MixinsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBApi__storage_, mixinsArray), @@ -140,7 +150,7 @@ + (GPBDescriptor *)descriptor { .number = GPBApi_FieldNumber_Syntax, .hasIndex = 3, .offset = (uint32_t)offsetof(GPBApi__storage_, syntax), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeEnum, }, }; @@ -151,7 +161,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBApi__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -165,13 +175,13 @@ + (GPBDescriptor *)descriptor { int32_t GPBApi_Syntax_RawValue(GPBApi *message) { GPBDescriptor *descriptor = [GPBApi descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBApi_FieldNumber_Syntax]; - return GPBGetMessageInt32Field(message, field); + return GPBGetMessageRawEnumField(message, field); } void SetGPBApi_Syntax_RawValue(GPBApi *message, int32_t value) { GPBDescriptor *descriptor = [GPBApi descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBApi_FieldNumber_Syntax]; - GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax); + GPBSetMessageRawEnumField(message, field, value); } #pragma mark - GPBMethod @@ -203,52 +213,52 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBMethod_FieldNumber_Name, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBMethod__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "requestTypeURL", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBMethod_FieldNumber_RequestTypeURL, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBMethod__storage_, requestTypeURL), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "requestStreaming", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBMethod_FieldNumber_RequestStreaming, .hasIndex = 2, .offset = 3, // Stored in _has_storage_ to save space. - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeBool, }, { .name = "responseTypeURL", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBMethod_FieldNumber_ResponseTypeURL, .hasIndex = 4, .offset = (uint32_t)offsetof(GPBMethod__storage_, responseTypeURL), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "responseStreaming", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBMethod_FieldNumber_ResponseStreaming, .hasIndex = 5, .offset = 6, // Stored in _has_storage_ to save space. - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeBool, }, { .name = "optionsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBOption), + .dataTypeSpecific.clazz = GPBObjCClass(GPBOption), .number = GPBMethod_FieldNumber_OptionsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBMethod__storage_, optionsArray), @@ -261,7 +271,7 @@ + (GPBDescriptor *)descriptor { .number = GPBMethod_FieldNumber_Syntax, .hasIndex = 7, .offset = (uint32_t)offsetof(GPBMethod__storage_, syntax), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeEnum, }, }; @@ -272,7 +282,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBMethod__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS static const char *extraTextFormatInfo = "\002\002\007\244\241!!\000\004\010\244\241!!\000"; @@ -291,13 +301,13 @@ + (GPBDescriptor *)descriptor { int32_t GPBMethod_Syntax_RawValue(GPBMethod *message) { GPBDescriptor *descriptor = [GPBMethod descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBMethod_FieldNumber_Syntax]; - return GPBGetMessageInt32Field(message, field); + return GPBGetMessageRawEnumField(message, field); } void SetGPBMethod_Syntax_RawValue(GPBMethod *message, int32_t value) { GPBDescriptor *descriptor = [GPBMethod descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBMethod_FieldNumber_Syntax]; - GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax); + GPBSetMessageRawEnumField(message, field, value); } #pragma mark - GPBMixin @@ -321,20 +331,20 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBMixin_FieldNumber_Name, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBMixin__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "root", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBMixin_FieldNumber_Root, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBMixin__storage_, root), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, }; @@ -345,7 +355,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBMixin__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBArray.h b/Pods/Protobuf/objectivec/GPBArray.h index 3d22cb8..5aea75c 100644 --- a/Pods/Protobuf/objectivec/GPBArray.h +++ b/Pods/Protobuf/objectivec/GPBArray.h @@ -36,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN //%PDDM-EXPAND DECLARE_ARRAYS() // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Int32 @@ -1535,6 +1536,7 @@ NS_ASSUME_NONNULL_BEGIN @end +// clang-format on //%PDDM-EXPAND-END DECLARE_ARRAYS() NS_ASSUME_NONNULL_END diff --git a/Pods/Protobuf/objectivec/GPBArray.m b/Pods/Protobuf/objectivec/GPBArray.m index 5ce1e59..bb9a077 100644 --- a/Pods/Protobuf/objectivec/GPBArray.m +++ b/Pods/Protobuf/objectivec/GPBArray.m @@ -295,6 +295,7 @@ static BOOL ArrayDefault_IsValidValue(int32_t value) { //%PDDM-EXPAND ARRAY_INTERFACE_SIMPLE(Int32, int32_t, %d) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Int32 @@ -541,8 +542,10 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 @end +// clang-format on //%PDDM-EXPAND ARRAY_INTERFACE_SIMPLE(UInt32, uint32_t, %u) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - UInt32 @@ -789,8 +792,10 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 @end +// clang-format on //%PDDM-EXPAND ARRAY_INTERFACE_SIMPLE(Int64, int64_t, %lld) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Int64 @@ -1037,8 +1042,10 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 @end +// clang-format on //%PDDM-EXPAND ARRAY_INTERFACE_SIMPLE(UInt64, uint64_t, %llu) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - UInt64 @@ -1285,8 +1292,10 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 @end +// clang-format on //%PDDM-EXPAND ARRAY_INTERFACE_SIMPLE(Float, float, %f) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Float @@ -1533,8 +1542,10 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 @end +// clang-format on //%PDDM-EXPAND ARRAY_INTERFACE_SIMPLE(Double, double, %lf) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Double @@ -1781,8 +1792,10 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 @end +// clang-format on //%PDDM-EXPAND ARRAY_INTERFACE_SIMPLE(Bool, BOOL, %d) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool @@ -2029,6 +2042,7 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 @end +// clang-format on //%PDDM-EXPAND-END (7 expansions) #pragma mark - Enum @@ -2126,6 +2140,7 @@ - (instancetype)copyWithZone:(NSZone *)zone { //%PDDM-EXPAND ARRAY_IMMUTABLE_CORE(Enum, int32_t, Raw, %d) // This block of code is generated, do not edit it directly. +// clang-format off - (void)dealloc { NSAssert(!_autocreator, @@ -2185,17 +2200,20 @@ - (void)enumerateRawValuesWithOptions:(NSEnumerationOptions)opts } } } +// clang-format on //%PDDM-EXPAND-END ARRAY_IMMUTABLE_CORE(Enum, int32_t, Raw, %d) - (int32_t)valueAtIndex:(NSUInteger)index { //%PDDM-EXPAND VALIDATE_RANGE(index, _count) // This block of code is generated, do not edit it directly. +// clang-format off if (index >= _count) { [NSException raise:NSRangeException format:@"Index (%lu) beyond bounds (%lu)", (unsigned long)index, (unsigned long)_count]; } +// clang-format on //%PDDM-EXPAND-END VALIDATE_RANGE(index, _count) int32_t result = _values[index]; if (!_validationFunc(result)) { @@ -2207,12 +2225,14 @@ - (int32_t)valueAtIndex:(NSUInteger)index { - (int32_t)rawValueAtIndex:(NSUInteger)index { //%PDDM-EXPAND VALIDATE_RANGE(index, _count) // This block of code is generated, do not edit it directly. +// clang-format off if (index >= _count) { [NSException raise:NSRangeException format:@"Index (%lu) beyond bounds (%lu)", (unsigned long)index, (unsigned long)_count]; } +// clang-format on //%PDDM-EXPAND-END VALIDATE_RANGE(index, _count) return _values[index]; } @@ -2253,6 +2273,7 @@ - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts //%PDDM-EXPAND ARRAY_MUTABLE_CORE(Enum, int32_t, Raw, %d) // This block of code is generated, do not edit it directly. +// clang-format off - (void)internalResizeToCapacity:(NSUInteger)newCapacity { _values = reallocf(_values, newCapacity * sizeof(int32_t)); @@ -2358,8 +2379,10 @@ - (void)exchangeValueAtIndex:(NSUInteger)idx1 _values[idx2] = temp; } +// clang-format on //%PDDM-EXPAND MUTATION_METHODS(Enum, int32_t, , EnumValidationList, EnumValidationOne) // This block of code is generated, do not edit it directly. +// clang-format off - (void)addValue:(int32_t)value { [self addValues:&value count:1]; @@ -2426,6 +2449,7 @@ - (void)replaceValueAtIndex:(NSUInteger)index withValue:(int32_t)value { } _values[index] = value; } +// clang-format on //%PDDM-EXPAND-END (2 expansions) //%PDDM-DEFINE MUTATION_HOOK_EnumValidationList() diff --git a/Pods/Protobuf/objectivec/GPBArray_PackagePrivate.h b/Pods/Protobuf/objectivec/GPBArray_PackagePrivate.h index 35a4538..07eab89 100644 --- a/Pods/Protobuf/objectivec/GPBArray_PackagePrivate.h +++ b/Pods/Protobuf/objectivec/GPBArray_PackagePrivate.h @@ -54,6 +54,7 @@ //%PDDM-EXPAND DECLARE_ARRAY_EXTRAS() // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Int32 @@ -119,6 +120,7 @@ } @end +// clang-format on //%PDDM-EXPAND-END DECLARE_ARRAY_EXTRAS() #pragma mark - NSArray Subclass diff --git a/Pods/Protobuf/objectivec/GPBBootstrap.h b/Pods/Protobuf/objectivec/GPBBootstrap.h index 0ebca25..ea5986b 100644 --- a/Pods/Protobuf/objectivec/GPBBootstrap.h +++ b/Pods/Protobuf/objectivec/GPBBootstrap.h @@ -46,7 +46,7 @@ #endif // If the headers are imported into Objective-C++, we can run into an issue -// where the defintion of NS_ENUM (really CF_ENUM) changes based on the C++ +// where the definition of NS_ENUM (really CF_ENUM) changes based on the C++ // standard that is in effect. If it isn't C++11 or higher, the definition // doesn't allow us to forward declare. We work around this one case by // providing a local definition. The default case has to use NS_ENUM for the @@ -115,6 +115,11 @@ // Meant to be used internally by generated code. #define GPB_METHOD_FAMILY_NONE __attribute__((objc_method_family(none))) +// Prevent subclassing of generated proto classes. +#ifndef GPB_FINAL +#define GPB_FINAL __attribute__((objc_subclassing_restricted)) +#endif // GPB_FINAL + // ---------------------------------------------------------------------------- // These version numbers are all internal to the ObjC Protobuf runtime; they // are used to ensure compatibility between the generated sources and the @@ -127,7 +132,7 @@ // Current library runtime version. // - Gets bumped when the runtime makes changes to the interfaces between the // generated code and runtime (things added/removed, etc). -#define GOOGLE_PROTOBUF_OBJC_VERSION 30002 +#define GOOGLE_PROTOBUF_OBJC_VERSION 30004 // Minimum runtime version supported for compiling/running against. // - Gets changed when support for the older generated code is dropped. diff --git a/Pods/Protobuf/objectivec/GPBCodedOutputStream.h b/Pods/Protobuf/objectivec/GPBCodedOutputStream.h index 23c404b..5dde974 100644 --- a/Pods/Protobuf/objectivec/GPBCodedOutputStream.h +++ b/Pods/Protobuf/objectivec/GPBCodedOutputStream.h @@ -177,6 +177,7 @@ extern NSString *const GPBCodedOutputStreamException_WriteFailed; //%PDDM-EXPAND _WRITE_DECLS() // This block of code is generated, do not edit it directly. +// clang-format off /** * Write a double for the given field number. @@ -527,7 +528,8 @@ extern NSString *const GPBCodedOutputStreamException_WriteFailed; * @param fieldNumber The field number assigned to the values. * @param values The values to write out. **/ -- (void)writeStringArray:(int32_t)fieldNumber values:(NSArray *)values; +- (void)writeStringArray:(int32_t)fieldNumber + values:(NSArray *)values; /** * Write a NSString without any tag. * @@ -548,7 +550,8 @@ extern NSString *const GPBCodedOutputStreamException_WriteFailed; * @param fieldNumber The field number assigned to the values. * @param values The values to write out. **/ -- (void)writeMessageArray:(int32_t)fieldNumber values:(NSArray *)values; +- (void)writeMessageArray:(int32_t)fieldNumber + values:(NSArray *)values; /** * Write a GPBMessage without any tag. * @@ -569,7 +572,8 @@ extern NSString *const GPBCodedOutputStreamException_WriteFailed; * @param fieldNumber The field number assigned to the values. * @param values The values to write out. **/ -- (void)writeBytesArray:(int32_t)fieldNumber values:(NSArray *)values; +- (void)writeBytesArray:(int32_t)fieldNumber + values:(NSArray *)values; /** * Write a NSData without any tag. * @@ -591,7 +595,8 @@ extern NSString *const GPBCodedOutputStreamException_WriteFailed; * @param fieldNumber The field number assigned to the values. * @param values The values to write out. **/ -- (void)writeGroupArray:(int32_t)fieldNumber values:(NSArray *)values; +- (void)writeGroupArray:(int32_t)fieldNumber + values:(NSArray *)values; /** * Write a GPBMessage without any tag (but does write the endGroup tag). * @@ -615,7 +620,8 @@ extern NSString *const GPBCodedOutputStreamException_WriteFailed; * @param fieldNumber The field number assigned to the values. * @param values The values to write out. **/ -- (void)writeUnknownGroupArray:(int32_t)fieldNumber values:(NSArray *)values; +- (void)writeUnknownGroupArray:(int32_t)fieldNumber + values:(NSArray *)values; /** * Write a GPBUnknownFieldSet without any tag (but does write the endGroup tag). * @@ -625,6 +631,7 @@ extern NSString *const GPBCodedOutputStreamException_WriteFailed; - (void)writeUnknownGroupNoTag:(int32_t)fieldNumber value:(GPBUnknownFieldSet *)value; +// clang-format on //%PDDM-EXPAND-END _WRITE_DECLS() /** @@ -690,7 +697,8 @@ NS_ASSUME_NONNULL_END //% * @param fieldNumber The field number assigned to the values. //% * @param values The values to write out. //% **/ -//%- (void)write##NAME##Array:(int32_t)fieldNumber values:(NSArray<##TYPE##*> *)values; +//%- (void)write##NAME##Array:(int32_t)fieldNumber +//% NAME$S values:(NSArray<##TYPE##*> *)values; //%/** //% * Write a TYPE without any tag. //% * @@ -714,7 +722,8 @@ NS_ASSUME_NONNULL_END //% * @param fieldNumber The field number assigned to the values. //% * @param values The values to write out. //% **/ -//%- (void)write##NAME##Array:(int32_t)fieldNumber values:(NSArray<##TYPE##*> *)values; +//%- (void)write##NAME##Array:(int32_t)fieldNumber +//% NAME$S values:(NSArray<##TYPE##*> *)values; //%/** //% * Write a TYPE without any tag (but does write the endGroup tag). //% * diff --git a/Pods/Protobuf/objectivec/GPBCodedOutputStream.m b/Pods/Protobuf/objectivec/GPBCodedOutputStream.m index 0693906..4e2a514 100644 --- a/Pods/Protobuf/objectivec/GPBCodedOutputStream.m +++ b/Pods/Protobuf/objectivec/GPBCodedOutputStream.m @@ -452,6 +452,7 @@ - (void)writeSInt64:(int32_t)fieldNumber value:(int64_t)value { //% //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Double, Double, double, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeDoubleArray:(int32_t)fieldNumber values:(GPBDoubleArray *)values @@ -477,8 +478,10 @@ - (void)writeDoubleArray:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Float, Float, float, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeFloatArray:(int32_t)fieldNumber values:(GPBFloatArray *)values @@ -504,8 +507,10 @@ - (void)writeFloatArray:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(UInt64, UInt64, uint64_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeUInt64Array:(int32_t)fieldNumber values:(GPBUInt64Array *)values @@ -531,8 +536,10 @@ - (void)writeUInt64Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Int64, Int64, int64_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeInt64Array:(int32_t)fieldNumber values:(GPBInt64Array *)values @@ -558,8 +565,10 @@ - (void)writeInt64Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Int32, Int32, int32_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeInt32Array:(int32_t)fieldNumber values:(GPBInt32Array *)values @@ -585,8 +594,10 @@ - (void)writeInt32Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(UInt32, UInt32, uint32_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeUInt32Array:(int32_t)fieldNumber values:(GPBUInt32Array *)values @@ -612,8 +623,10 @@ - (void)writeUInt32Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Fixed64, UInt64, uint64_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeFixed64Array:(int32_t)fieldNumber values:(GPBUInt64Array *)values @@ -639,8 +652,10 @@ - (void)writeFixed64Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Fixed32, UInt32, uint32_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeFixed32Array:(int32_t)fieldNumber values:(GPBUInt32Array *)values @@ -666,8 +681,10 @@ - (void)writeFixed32Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(SInt32, Int32, int32_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeSInt32Array:(int32_t)fieldNumber values:(GPBInt32Array *)values @@ -693,8 +710,10 @@ - (void)writeSInt32Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(SInt64, Int64, int64_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeSInt64Array:(int32_t)fieldNumber values:(GPBInt64Array *)values @@ -720,8 +739,10 @@ - (void)writeSInt64Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(SFixed64, Int64, int64_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeSFixed64Array:(int32_t)fieldNumber values:(GPBInt64Array *)values @@ -747,8 +768,10 @@ - (void)writeSFixed64Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(SFixed32, Int32, int32_t, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeSFixed32Array:(int32_t)fieldNumber values:(GPBInt32Array *)values @@ -774,8 +797,10 @@ - (void)writeSFixed32Array:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Bool, Bool, BOOL, ) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeBoolArray:(int32_t)fieldNumber values:(GPBBoolArray *)values @@ -801,8 +826,10 @@ - (void)writeBoolArray:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_PACKABLE_DEFNS(Enum, Enum, int32_t, Raw) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeEnumArray:(int32_t)fieldNumber values:(GPBEnumArray *)values @@ -828,8 +855,10 @@ - (void)writeEnumArray:(int32_t)fieldNumber } } +// clang-format on //%PDDM-EXPAND WRITE_UNPACKABLE_DEFNS(String, NSString) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeStringArray:(int32_t)fieldNumber values:(NSArray *)values { for (NSString *value in values) { @@ -837,8 +866,10 @@ - (void)writeStringArray:(int32_t)fieldNumber values:(NSArray *)values { } } +// clang-format on //%PDDM-EXPAND WRITE_UNPACKABLE_DEFNS(Message, GPBMessage) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeMessageArray:(int32_t)fieldNumber values:(NSArray *)values { for (GPBMessage *value in values) { @@ -846,8 +877,10 @@ - (void)writeMessageArray:(int32_t)fieldNumber values:(NSArray *)values { } } +// clang-format on //%PDDM-EXPAND WRITE_UNPACKABLE_DEFNS(Bytes, NSData) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeBytesArray:(int32_t)fieldNumber values:(NSArray *)values { for (NSData *value in values) { @@ -855,8 +888,10 @@ - (void)writeBytesArray:(int32_t)fieldNumber values:(NSArray *)values { } } +// clang-format on //%PDDM-EXPAND WRITE_UNPACKABLE_DEFNS(Group, GPBMessage) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeGroupArray:(int32_t)fieldNumber values:(NSArray *)values { for (GPBMessage *value in values) { @@ -864,8 +899,10 @@ - (void)writeGroupArray:(int32_t)fieldNumber values:(NSArray *)values { } } +// clang-format on //%PDDM-EXPAND WRITE_UNPACKABLE_DEFNS(UnknownGroup, GPBUnknownFieldSet) // This block of code is generated, do not edit it directly. +// clang-format off - (void)writeUnknownGroupArray:(int32_t)fieldNumber values:(NSArray *)values { for (GPBUnknownFieldSet *value in values) { @@ -873,6 +910,7 @@ - (void)writeUnknownGroupArray:(int32_t)fieldNumber values:(NSArray *)values { } } +// clang-format on //%PDDM-EXPAND-END (19 expansions) - (void)writeMessageSetExtension:(int32_t)fieldNumber diff --git a/Pods/Protobuf/objectivec/GPBDescriptor.m b/Pods/Protobuf/objectivec/GPBDescriptor.m index 41bf5ad..c29b955 100644 --- a/Pods/Protobuf/objectivec/GPBDescriptor.m +++ b/Pods/Protobuf/objectivec/GPBDescriptor.m @@ -44,7 +44,7 @@ // The addresses of these variables are used as keys for objc_getAssociatedObject. static const char kTextFormatExtraValueKey = 0; -static const char kParentClassNameValueKey = 0; +static const char kParentClassValueKey = 0; static const char kClassNameSuffixKey = 0; // Utility function to generate selectors on the fly. @@ -126,6 +126,10 @@ @implementation GPBDescriptor { GPBFileSyntax syntax = file.syntax; BOOL fieldsIncludeDefault = (flags & GPBDescriptorInitializationFlag_FieldsWithDefault) != 0; + BOOL usesClassRefs = + (flags & GPBDescriptorInitializationFlag_UsesClassRefs) != 0; + BOOL proto3OptionalKnown = + (flags & GPBDescriptorInitializationFlag_Proto3OptionalKnown) != 0; void *desc; for (uint32_t i = 0; i < fieldCount; ++i) { @@ -143,6 +147,8 @@ @implementation GPBDescriptor { GPBFieldDescriptor *fieldDescriptor = [[GPBFieldDescriptor alloc] initWithFieldDescription:desc includesDefault:fieldsIncludeDefault + usesClassRefs:usesClassRefs + proto3OptionalKnown:proto3OptionalKnown syntax:syntax]; [fields addObject:fieldDescriptor]; [fieldDescriptor release]; @@ -217,15 +223,19 @@ - (void)setupExtensionRanges:(const GPBExtensionRange *)ranges count:(int32_t)co extensionRangesCount_ = count; } +- (void)setupContainingMessageClass:(Class)messageClass { + objc_setAssociatedObject(self, &kParentClassValueKey, + messageClass, + OBJC_ASSOCIATION_ASSIGN); +} + - (void)setupContainingMessageClassName:(const char *)msgClassName { // Note: Only fetch the class here, can't send messages to it because // that could cause cycles back to this class within +initialize if // two messages have each other in fields (i.e. - they build a graph). - NSAssert(objc_getClass(msgClassName), @"Class %s not defined", msgClassName); - NSValue *parentNameValue = [NSValue valueWithPointer:msgClassName]; - objc_setAssociatedObject(self, &kParentClassNameValueKey, - parentNameValue, - OBJC_ASSOCIATION_RETAIN_NONATOMIC); + Class clazz = objc_getClass(msgClassName); + NSAssert(clazz, @"Class %s not defined", msgClassName); + [self setupContainingMessageClass:clazz]; } - (void)setupMessageClassNameSuffix:(NSString *)suffix { @@ -241,14 +251,7 @@ - (NSString *)name { } - (GPBDescriptor *)containingType { - NSValue *parentNameValue = - objc_getAssociatedObject(self, &kParentClassNameValueKey); - if (!parentNameValue) { - return nil; - } - const char *parentName = [parentNameValue pointerValue]; - Class parentClass = objc_getClass(parentName); - NSAssert(parentClass, @"Class %s not defined", parentName); + Class parentClass = objc_getAssociatedObject(self, &kParentClassValueKey); return [parentClass descriptor]; } @@ -487,6 +490,8 @@ - (instancetype)init { - (instancetype)initWithFieldDescription:(void *)description includesDefault:(BOOL)includesDefault + usesClassRefs:(BOOL)usesClassRefs + proto3OptionalKnown:(BOOL)proto3OptionalKnown syntax:(GPBFileSyntax)syntax { if ((self = [super init])) { GPBMessageFieldDescription *coreDesc; @@ -503,20 +508,34 @@ - (instancetype)initWithFieldDescription:(void *)description BOOL isMessage = GPBDataTypeIsMessage(dataType); BOOL isMapOrArray = GPBFieldIsMapOrArray(self); + // If proto3 optionals weren't known (i.e. generated code from an + // older version), compute the flag for the rest of the runtime. + if (!proto3OptionalKnown) { + // If it was... + // - proto3 syntax + // - not repeated/map + // - not in a oneof (negative has index) + // - not a message (the flag doesn't make sense for messages) + BOOL clearOnZero = ((syntax == GPBFileSyntaxProto3) && + !isMapOrArray && + (coreDesc->hasIndex >= 0) && + !isMessage); + if (clearOnZero) { + coreDesc->flags |= GPBFieldClearHasIvarOnZero; + } + } + if (isMapOrArray) { // map<>/repeated fields get a *Count property (inplace of a has*) to // support checking if there are any entries without triggering // autocreation. hasOrCountSel_ = SelFromStrings(NULL, coreDesc->name, "_Count", NO); } else { - // If there is a positive hasIndex, then: - // - All fields types for proto2 messages get has* selectors. - // - Only message fields for proto3 messages get has* selectors. - // Note: the positive check is to handle oneOfs, we can't check - // containingOneof_ because it isn't set until after initialization. + // It is a single field; it gets has/setHas selectors if... + // - not in a oneof (negative has index) + // - not clearing on zero if ((coreDesc->hasIndex >= 0) && - (coreDesc->hasIndex != GPBNoHasBit) && - ((syntax != GPBFileSyntaxProto3) || isMessage)) { + ((coreDesc->flags & GPBFieldClearHasIvarOnZero) == 0)) { hasOrCountSel_ = SelFromStrings("has", coreDesc->name, NULL, NO); setHasSel_ = SelFromStrings("setHas", coreDesc->name, NULL, YES); } @@ -524,12 +543,17 @@ - (instancetype)initWithFieldDescription:(void *)description // Extra type specific data. if (isMessage) { - const char *className = coreDesc->dataTypeSpecific.className; // Note: Only fetch the class here, can't send messages to it because // that could cause cycles back to this class within +initialize if // two messages have each other in fields (i.e. - they build a graph). - msgClass_ = objc_getClass(className); - NSAssert(msgClass_, @"Class %s not defined", className); + if (usesClassRefs) { + msgClass_ = coreDesc->dataTypeSpecific.clazz; + } else { + // Backwards compatibility for sources generated with older protoc. + const char *className = coreDesc->dataTypeSpecific.className; + msgClass_ = objc_getClass(className); + NSAssert(msgClass_, @"Class %s not defined", className); + } } else if (dataType == GPBDataTypeEnum) { if ((coreDesc->flags & GPBFieldHasEnumDescriptor) != 0) { enumHandling_.enumDescriptor_ = @@ -957,33 +981,32 @@ @implementation GPBExtensionDescriptor { GPBGenericValue defaultValue_; } -@synthesize containingMessageClass = containingMessageClass_; - -- (instancetype)initWithExtensionDescription: - (GPBExtensionDescription *)description { +- (instancetype)initWithExtensionDescription:(GPBExtensionDescription *)desc + usesClassRefs:(BOOL)usesClassRefs { if ((self = [super init])) { - description_ = description; - -#if defined(DEBUG) && DEBUG - const char *className = description->messageOrGroupClassName; - if (className) { - NSAssert(objc_lookUpClass(className) != Nil, - @"Class %s not defined", className); - } -#endif + description_ = desc; + if (!usesClassRefs) { + // Legacy without class ref support. + const char *className = description_->messageOrGroupClass.name; + if (className) { + Class clazz = objc_lookUpClass(className); + NSAssert(clazz != Nil, @"Class %s not defined", className); + description_->messageOrGroupClass.clazz = clazz; + } - if (description->extendedClass) { - Class containingClass = objc_lookUpClass(description->extendedClass); - NSAssert(containingClass, @"Class %s not defined", - description->extendedClass); - containingMessageClass_ = containingClass; + const char *extendedClassName = description_->extendedClass.name; + if (extendedClassName) { + Class clazz = objc_lookUpClass(extendedClassName); + NSAssert(clazz, @"Class %s not defined", extendedClassName); + description_->extendedClass.clazz = clazz; + } } GPBDataType type = description_->dataType; if (type == GPBDataTypeBytes) { // Data stored as a length prefixed c-string in descriptor records. const uint8_t *bytes = - (const uint8_t *)description->defaultValue.valueData; + (const uint8_t *)description_->defaultValue.valueData; if (bytes) { uint32_t length; memcpy(&length, bytes, sizeof(length)); @@ -998,12 +1021,16 @@ - (instancetype)initWithExtensionDescription: // aren't common, we avoid the hit startup hit and it avoid initialization // order issues. } else { - defaultValue_ = description->defaultValue; + defaultValue_ = description_->defaultValue; } } return self; } +- (instancetype)initWithExtensionDescription:(GPBExtensionDescription *)desc { + return [self initWithExtensionDescription:desc usesClassRefs:NO]; +} + - (void)dealloc { if ((description_->dataType == GPBDataTypeBytes) && !GPBExtensionIsRepeated(description_)) { @@ -1055,7 +1082,11 @@ - (BOOL)isPackable { } - (Class)msgClass { - return objc_getClass(description_->messageOrGroupClassName); + return description_->messageOrGroupClass.clazz; +} + +- (Class)containingMessageClass { + return description_->extendedClass.clazz; } - (GPBEnumDescriptor *)enumDescriptor { diff --git a/Pods/Protobuf/objectivec/GPBDescriptor_PackagePrivate.h b/Pods/Protobuf/objectivec/GPBDescriptor_PackagePrivate.h index 452b3f8..b3d6730 100644 --- a/Pods/Protobuf/objectivec/GPBDescriptor_PackagePrivate.h +++ b/Pods/Protobuf/objectivec/GPBDescriptor_PackagePrivate.h @@ -45,6 +45,10 @@ typedef NS_OPTIONS(uint16_t, GPBFieldFlags) { GPBFieldOptional = 1 << 3, GPBFieldHasDefaultValue = 1 << 4, + // Indicate that the field should "clear" when set to zero value. This is the + // proto3 non optional behavior for singular data (ints, data, string, enum) + // fields. + GPBFieldClearHasIvarOnZero = 1 << 5, // Indicates the field needs custom handling for the TextFormat name, if not // set, the name can be derived from the ObjC name. GPBFieldTextFormatNameCustom = 1 << 6, @@ -80,7 +84,11 @@ typedef struct GPBMessageFieldDescription { // Name of ivar. const char *name; union { - const char *className; // Name for message class. + // className is deprecated and will be removed in favor of clazz. + // kept around right now for backwards compatibility. + // clazz is used iff GPBDescriptorInitializationFlag_UsesClassRefs is set. + char *className; // Name of the class of the message. + Class clazz; // Class of the message. // For enums only: If EnumDescriptors are compiled in, it will be that, // otherwise it will be the verifier. GPBEnumDescriptorFunc enumDescFunc; @@ -123,8 +131,14 @@ typedef NS_OPTIONS(uint8_t, GPBExtensionOptions) { typedef struct GPBExtensionDescription { GPBGenericValue defaultValue; const char *singletonName; - const char *extendedClass; - const char *messageOrGroupClassName; + union { + const char *name; + Class clazz; + } extendedClass; + union { + const char *name; + Class clazz; + } messageOrGroupClass; GPBEnumDescriptorFunc enumDescriptorFunc; int32_t fieldNumber; GPBDataType dataType; @@ -135,6 +149,17 @@ typedef NS_OPTIONS(uint32_t, GPBDescriptorInitializationFlags) { GPBDescriptorInitializationFlag_None = 0, GPBDescriptorInitializationFlag_FieldsWithDefault = 1 << 0, GPBDescriptorInitializationFlag_WireFormat = 1 << 1, + + // This is used as a stopgap as we move from using class names to class + // references. The runtime needs to support both until we allow a + // breaking change in the runtime. + GPBDescriptorInitializationFlag_UsesClassRefs = 1 << 2, + + // This flag is used to indicate that the generated sources already contain + // the `GPBFieldClearHasIvarOnZero` flag and it doesn't have to be computed + // at startup. This allows older generated code to still work with the + // current runtime library. + GPBDescriptorInitializationFlag_Proto3OptionalKnown = 1 << 3, }; @interface GPBDescriptor () { @@ -168,9 +193,12 @@ typedef NS_OPTIONS(uint32_t, GPBDescriptorInitializationFlags) { firstHasIndex:(int32_t)firstHasIndex; - (void)setupExtraTextInfo:(const char *)extraTextFormatInfo; - (void)setupExtensionRanges:(const GPBExtensionRange *)ranges count:(int32_t)count; -- (void)setupContainingMessageClassName:(const char *)msgClassName; +- (void)setupContainingMessageClass:(Class)msgClass; - (void)setupMessageClassNameSuffix:(NSString *)suffix; +// Deprecated. Use setupContainingMessageClass instead. +- (void)setupContainingMessageClassName:(const char *)msgClassName; + @end @interface GPBFileDescriptor () @@ -206,7 +234,10 @@ typedef NS_OPTIONS(uint32_t, GPBDescriptorInitializationFlags) { // description has to be long lived, it is held as a raw pointer. - (instancetype)initWithFieldDescription:(void *)description includesDefault:(BOOL)includesDefault + usesClassRefs:(BOOL)usesClassRefs + proto3OptionalKnown:(BOOL)proto3OptionalKnown syntax:(GPBFileSyntax)syntax; + @end @interface GPBEnumDescriptor () @@ -246,8 +277,11 @@ typedef NS_OPTIONS(uint32_t, GPBDescriptorInitializationFlags) { @property(nonatomic, readonly) GPBWireFormat alternateWireType; // description has to be long lived, it is held as a raw pointer. -- (instancetype)initWithExtensionDescription: - (GPBExtensionDescription *)description; +- (instancetype)initWithExtensionDescription:(GPBExtensionDescription *)desc + usesClassRefs:(BOOL)usesClassRefs; +// Deprecated. Calls above with `usesClassRefs = NO` +- (instancetype)initWithExtensionDescription:(GPBExtensionDescription *)desc; + - (NSComparisonResult)compareByFieldNumber:(GPBExtensionDescriptor *)other; @end diff --git a/Pods/Protobuf/objectivec/GPBDictionary.h b/Pods/Protobuf/objectivec/GPBDictionary.h index d00b5b3..28d880d 100644 --- a/Pods/Protobuf/objectivec/GPBDictionary.h +++ b/Pods/Protobuf/objectivec/GPBDictionary.h @@ -45,6 +45,7 @@ NS_ASSUME_NONNULL_BEGIN //%PDDM-EXPAND DECLARE_DICTIONARIES() // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - UInt32 -> UInt32 @@ -5478,6 +5479,7 @@ NS_ASSUME_NONNULL_BEGIN @end +// clang-format on //%PDDM-EXPAND-END DECLARE_DICTIONARIES() NS_ASSUME_NONNULL_END diff --git a/Pods/Protobuf/objectivec/GPBDictionary.m b/Pods/Protobuf/objectivec/GPBDictionary.m index 1bb24be..187a970 100644 --- a/Pods/Protobuf/objectivec/GPBDictionary.m +++ b/Pods/Protobuf/objectivec/GPBDictionary.m @@ -147,6 +147,7 @@ static BOOL DictDefault_IsValidValue(int32_t value) { //%SERIALIZE_SUPPORT_3_TYPE(Object, id, Message, String, Bytes) //%PDDM-EXPAND SERIALIZE_SUPPORT_HELPERS() // This block of code is generated, do not edit it directly. +// clang-format off static size_t ComputeDictInt32FieldSize(int32_t value, uint32_t fieldNum, GPBDataType dataType) { if (dataType == GPBDataTypeInt32) { @@ -325,6 +326,7 @@ static void WriteDictObjectField(GPBCodedOutputStream *stream, id value, uint32_ } } +// clang-format on //%PDDM-EXPAND-END SERIALIZE_SUPPORT_HELPERS() size_t GPBDictionaryComputeSizeInternalHelper(NSDictionary *dict, GPBFieldDescriptor *field) { @@ -508,7 +510,7 @@ void GPBDictionaryReadEntry(id mapDictionary, #if defined(__clang_analyzer__) case GPBDataTypeGroup: // Maps can't really have Groups as the value type, but this case is needed - // so the analyzer won't report the posibility of send nil in for the value + // so the analyzer won't report the possibility of send nil in for the value // in the NSMutableDictionary case below. #endif case GPBDataTypeMessage: { @@ -1427,6 +1429,7 @@ void GPBDictionaryReadEntry(id mapDictionary, //%PDDM-EXPAND DICTIONARY_IMPL_FOR_POD_KEY(UInt32, uint32_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - UInt32 -> UInt32 @@ -3173,8 +3176,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_IMPL_FOR_POD_KEY(Int32, int32_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Int32 -> UInt32 @@ -4921,8 +4926,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_IMPL_FOR_POD_KEY(UInt64, uint64_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - UInt64 -> UInt32 @@ -6669,8 +6676,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_IMPL_FOR_POD_KEY(Int64, int64_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Int64 -> UInt32 @@ -8417,8 +8426,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_POD_IMPL_FOR_KEY(String, NSString, *, OBJECT) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - String -> UInt32 @@ -10021,11 +10032,13 @@ - (void)setEnum:(int32_t)value forKey:(NSString *)key { @end +// clang-format on //%PDDM-EXPAND-END (5 expansions) //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(UInt32, uint32_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> UInt32 @@ -10233,8 +10246,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Int32, int32_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> Int32 @@ -10442,8 +10457,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(UInt64, uint64_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> UInt64 @@ -10651,8 +10668,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Int64, int64_t) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> Int64 @@ -10860,8 +10879,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Bool, BOOL) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> Bool @@ -11069,8 +11090,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Float, float) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> Float @@ -11278,8 +11301,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Double, double) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> Double @@ -11487,8 +11512,10 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_OBJECT_IMPL(Object, id) // This block of code is generated, do not edit it directly. +// clang-format off #pragma mark - Bool -> Object @@ -11717,6 +11744,7 @@ - (void)removeAll { @end +// clang-format on //%PDDM-EXPAND-END (8 expansions) #pragma mark - Bool -> Enum @@ -11890,6 +11918,7 @@ - (void)enumerateKeysAndEnumsUsingBlock: //%PDDM-EXPAND SERIAL_DATA_FOR_ENTRY_POD_Enum(Bool) // This block of code is generated, do not edit it directly. +// clang-format off - (NSData *)serializedDataForUnknownValue:(int32_t)value forKey:(GPBGenericValue *)key @@ -11904,6 +11933,7 @@ - (NSData *)serializedDataForUnknownValue:(int32_t)value return data; } +// clang-format on //%PDDM-EXPAND-END SERIAL_DATA_FOR_ENTRY_POD_Enum(Bool) - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { diff --git a/Pods/Protobuf/objectivec/GPBDictionary_PackagePrivate.h b/Pods/Protobuf/objectivec/GPBDictionary_PackagePrivate.h index 7b921e8..15e4283 100644 --- a/Pods/Protobuf/objectivec/GPBDictionary_PackagePrivate.h +++ b/Pods/Protobuf/objectivec/GPBDictionary_PackagePrivate.h @@ -82,6 +82,7 @@ //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(UInt32) // This block of code is generated, do not edit it directly. +// clang-format off @interface GPBUInt32UInt32Dictionary () { @package @@ -143,8 +144,10 @@ __attribute__((ns_returns_retained)); @end +// clang-format on //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(Int32) // This block of code is generated, do not edit it directly. +// clang-format off @interface GPBInt32UInt32Dictionary () { @package @@ -206,8 +209,10 @@ __attribute__((ns_returns_retained)); @end +// clang-format on //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(UInt64) // This block of code is generated, do not edit it directly. +// clang-format off @interface GPBUInt64UInt32Dictionary () { @package @@ -269,8 +274,10 @@ __attribute__((ns_returns_retained)); @end +// clang-format on //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(Int64) // This block of code is generated, do not edit it directly. +// clang-format off @interface GPBInt64UInt32Dictionary () { @package @@ -332,8 +339,10 @@ __attribute__((ns_returns_retained)); @end +// clang-format on //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(Bool) // This block of code is generated, do not edit it directly. +// clang-format off @interface GPBBoolUInt32Dictionary () { @package @@ -395,8 +404,10 @@ __attribute__((ns_returns_retained)); @end +// clang-format on //%PDDM-EXPAND DICTIONARY_POD_PRIV_INTERFACES_FOR_KEY(String) // This block of code is generated, do not edit it directly. +// clang-format off @interface GPBStringUInt32Dictionary () { @package @@ -449,6 +460,7 @@ keyDataType:(GPBDataType)keyDataType; @end +// clang-format on //%PDDM-EXPAND-END (6 expansions) #pragma mark - NSDictionary Subclass diff --git a/Pods/Protobuf/objectivec/GPBDuration.pbobjc.h b/Pods/Protobuf/objectivec/GPBDuration.pbobjc.h new file mode 100644 index 0000000..88527f5 --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBDuration.pbobjc.h @@ -0,0 +1,145 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/duration.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBDurationRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBDurationRoot : GPBRootObject +@end + +#pragma mark - GPBDuration + +typedef GPB_ENUM(GPBDuration_FieldNumber) { + GPBDuration_FieldNumber_Seconds = 1, + GPBDuration_FieldNumber_Nanos = 2, +}; + +/** + * A Duration represents a signed, fixed-length span of time represented + * as a count of seconds and fractions of seconds at nanosecond + * resolution. It is independent of any calendar and concepts like "day" + * or "month". It is related to Timestamp in that the difference between + * two Timestamp values is a Duration and it can be added or subtracted + * from a Timestamp. Range is approximately +-10,000 years. + * + * # Examples + * + * Example 1: Compute Duration from two Timestamps in pseudo code. + * + * Timestamp start = ...; + * Timestamp end = ...; + * Duration duration = ...; + * + * duration.seconds = end.seconds - start.seconds; + * duration.nanos = end.nanos - start.nanos; + * + * if (duration.seconds < 0 && duration.nanos > 0) { + * duration.seconds += 1; + * duration.nanos -= 1000000000; + * } else if (duration.seconds > 0 && duration.nanos < 0) { + * duration.seconds -= 1; + * duration.nanos += 1000000000; + * } + * + * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. + * + * Timestamp start = ...; + * Duration duration = ...; + * Timestamp end = ...; + * + * end.seconds = start.seconds + duration.seconds; + * end.nanos = start.nanos + duration.nanos; + * + * if (end.nanos < 0) { + * end.seconds -= 1; + * end.nanos += 1000000000; + * } else if (end.nanos >= 1000000000) { + * end.seconds += 1; + * end.nanos -= 1000000000; + * } + * + * Example 3: Compute Duration from datetime.timedelta in Python. + * + * td = datetime.timedelta(days=3, minutes=10) + * duration = Duration() + * duration.FromTimedelta(td) + * + * # JSON Mapping + * + * In JSON format, the Duration type is encoded as a string rather than an + * object, where the string ends in the suffix "s" (indicating seconds) and + * is preceded by the number of seconds, with nanoseconds expressed as + * fractional seconds. For example, 3 seconds with 0 nanoseconds should be + * encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should + * be expressed in JSON format as "3.000000001s", and 3 seconds and 1 + * microsecond should be expressed in JSON format as "3.000001s". + **/ +GPB_FINAL @interface GPBDuration : GPBMessage + +/** + * Signed seconds of the span of time. Must be from -315,576,000,000 + * to +315,576,000,000 inclusive. Note: these bounds are computed from: + * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + **/ +@property(nonatomic, readwrite) int64_t seconds; + +/** + * Signed fractions of a second at nanosecond resolution of the span + * of time. Durations less than one second are represented with a 0 + * `seconds` field and a positive or negative `nanos` field. For durations + * of one second or more, a non-zero value for the `nanos` field must be + * of the same sign as the `seconds` field. Must be from -999,999,999 + * to +999,999,999 inclusive. + **/ +@property(nonatomic, readwrite) int32_t nanos; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Duration.pbobjc.m b/Pods/Protobuf/objectivec/GPBDuration.pbobjc.m similarity index 84% rename from Pods/Protobuf/objectivec/google/protobuf/Duration.pbobjc.m rename to Pods/Protobuf/objectivec/GPBDuration.pbobjc.m index 1b718a1..d3cc7e3 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Duration.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBDuration.pbobjc.m @@ -8,15 +8,15 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/Duration.pbobjc.h" + #import "GPBDuration.pbobjc.h" #endif // @@protoc_insertion_point(imports) @@ -68,20 +68,20 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "seconds", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBDuration_FieldNumber_Seconds, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBDuration__storage_, seconds), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt64, }, { .name = "nanos", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBDuration_FieldNumber_Nanos, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBDuration__storage_, nanos), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt32, }, }; @@ -92,7 +92,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBDuration__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBEmpty.pbobjc.h b/Pods/Protobuf/objectivec/GPBEmpty.pbobjc.h new file mode 100644 index 0000000..45600ea --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBEmpty.pbobjc.h @@ -0,0 +1,74 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/empty.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBEmptyRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBEmptyRoot : GPBRootObject +@end + +#pragma mark - GPBEmpty + +/** + * A generic empty message that you can re-use to avoid defining duplicated + * empty messages in your APIs. A typical example is to use it as the request + * or the response type of an API method. For instance: + * + * service Foo { + * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); + * } + * + * The JSON representation for `Empty` is empty JSON object `{}`. + **/ +GPB_FINAL @interface GPBEmpty : GPBMessage + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Empty.pbobjc.m b/Pods/Protobuf/objectivec/GPBEmpty.pbobjc.m similarity index 88% rename from Pods/Protobuf/objectivec/google/protobuf/Empty.pbobjc.m rename to Pods/Protobuf/objectivec/GPBEmpty.pbobjc.m index 4cb0f12..df3e398 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Empty.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBEmpty.pbobjc.m @@ -8,15 +8,15 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/Empty.pbobjc.h" + #import "GPBEmpty.pbobjc.h" #endif // @@protoc_insertion_point(imports) @@ -68,7 +68,7 @@ + (GPBDescriptor *)descriptor { fields:NULL fieldCount:0 storageSize:sizeof(GPBEmpty__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBFieldMask.pbobjc.h b/Pods/Protobuf/objectivec/GPBFieldMask.pbobjc.h new file mode 100644 index 0000000..3028b77 --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBFieldMask.pbobjc.h @@ -0,0 +1,273 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/field_mask.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBFieldMaskRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBFieldMaskRoot : GPBRootObject +@end + +#pragma mark - GPBFieldMask + +typedef GPB_ENUM(GPBFieldMask_FieldNumber) { + GPBFieldMask_FieldNumber_PathsArray = 1, +}; + +/** + * `FieldMask` represents a set of symbolic field paths, for example: + * + * paths: "f.a" + * paths: "f.b.d" + * + * Here `f` represents a field in some root message, `a` and `b` + * fields in the message found in `f`, and `d` a field found in the + * message in `f.b`. + * + * Field masks are used to specify a subset of fields that should be + * returned by a get operation or modified by an update operation. + * Field masks also have a custom JSON encoding (see below). + * + * # Field Masks in Projections + * + * When used in the context of a projection, a response message or + * sub-message is filtered by the API to only contain those fields as + * specified in the mask. For example, if the mask in the previous + * example is applied to a response message as follows: + * + * f { + * a : 22 + * b { + * d : 1 + * x : 2 + * } + * y : 13 + * } + * z: 8 + * + * The result will not contain specific values for fields x,y and z + * (their value will be set to the default, and omitted in proto text + * output): + * + * + * f { + * a : 22 + * b { + * d : 1 + * } + * } + * + * A repeated field is not allowed except at the last position of a + * paths string. + * + * If a FieldMask object is not present in a get operation, the + * operation applies to all fields (as if a FieldMask of all fields + * had been specified). + * + * Note that a field mask does not necessarily apply to the + * top-level response message. In case of a REST get operation, the + * field mask applies directly to the response, but in case of a REST + * list operation, the mask instead applies to each individual message + * in the returned resource list. In case of a REST custom method, + * other definitions may be used. Where the mask applies will be + * clearly documented together with its declaration in the API. In + * any case, the effect on the returned resource/resources is required + * behavior for APIs. + * + * # Field Masks in Update Operations + * + * A field mask in update operations specifies which fields of the + * targeted resource are going to be updated. The API is required + * to only change the values of the fields as specified in the mask + * and leave the others untouched. If a resource is passed in to + * describe the updated values, the API ignores the values of all + * fields not covered by the mask. + * + * If a repeated field is specified for an update operation, new values will + * be appended to the existing repeated field in the target resource. Note that + * a repeated field is only allowed in the last position of a `paths` string. + * + * If a sub-message is specified in the last position of the field mask for an + * update operation, then new value will be merged into the existing sub-message + * in the target resource. + * + * For example, given the target message: + * + * f { + * b { + * d: 1 + * x: 2 + * } + * c: [1] + * } + * + * And an update message: + * + * f { + * b { + * d: 10 + * } + * c: [2] + * } + * + * then if the field mask is: + * + * paths: ["f.b", "f.c"] + * + * then the result will be: + * + * f { + * b { + * d: 10 + * x: 2 + * } + * c: [1, 2] + * } + * + * An implementation may provide options to override this default behavior for + * repeated and message fields. + * + * In order to reset a field's value to the default, the field must + * be in the mask and set to the default value in the provided resource. + * Hence, in order to reset all fields of a resource, provide a default + * instance of the resource and set all fields in the mask, or do + * not provide a mask as described below. + * + * If a field mask is not present on update, the operation applies to + * all fields (as if a field mask of all fields has been specified). + * Note that in the presence of schema evolution, this may mean that + * fields the client does not know and has therefore not filled into + * the request will be reset to their default. If this is unwanted + * behavior, a specific service may require a client to always specify + * a field mask, producing an error if not. + * + * As with get operations, the location of the resource which + * describes the updated values in the request message depends on the + * operation kind. In any case, the effect of the field mask is + * required to be honored by the API. + * + * ## Considerations for HTTP REST + * + * The HTTP kind of an update operation which uses a field mask must + * be set to PATCH instead of PUT in order to satisfy HTTP semantics + * (PUT must only be used for full updates). + * + * # JSON Encoding of Field Masks + * + * In JSON, a field mask is encoded as a single string where paths are + * separated by a comma. Fields name in each path are converted + * to/from lower-camel naming conventions. + * + * As an example, consider the following message declarations: + * + * message Profile { + * User user = 1; + * Photo photo = 2; + * } + * message User { + * string display_name = 1; + * string address = 2; + * } + * + * In proto a field mask for `Profile` may look as such: + * + * mask { + * paths: "user.display_name" + * paths: "photo" + * } + * + * In JSON, the same mask is represented as below: + * + * { + * mask: "user.displayName,photo" + * } + * + * # Field Masks and Oneof Fields + * + * Field masks treat fields in oneofs just as regular fields. Consider the + * following message: + * + * message SampleMessage { + * oneof test_oneof { + * string name = 4; + * SubMessage sub_message = 9; + * } + * } + * + * The field mask can be: + * + * mask { + * paths: "name" + * } + * + * Or: + * + * mask { + * paths: "sub_message" + * } + * + * Note that oneof type names ("test_oneof" in this case) cannot be used in + * paths. + * + * ## Field Mask Verification + * + * The implementation of any API method which has a FieldMask type field in the + * request should verify the included field paths, and return an + * `INVALID_ARGUMENT` error if any path is unmappable. + **/ +GPB_FINAL @interface GPBFieldMask : GPBMessage + +/** The set of field mask paths. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *pathsArray; +/** The number of items in @c pathsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger pathsArray_Count; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/FieldMask.pbobjc.m b/Pods/Protobuf/objectivec/GPBFieldMask.pbobjc.m similarity index 88% rename from Pods/Protobuf/objectivec/google/protobuf/FieldMask.pbobjc.m rename to Pods/Protobuf/objectivec/GPBFieldMask.pbobjc.m index 2e6b2ee..3605f89 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/FieldMask.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBFieldMask.pbobjc.m @@ -8,15 +8,15 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/FieldMask.pbobjc.h" + #import "GPBFieldMask.pbobjc.h" #endif // @@protoc_insertion_point(imports) @@ -66,7 +66,7 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "pathsArray", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBFieldMask_FieldNumber_PathsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBFieldMask__storage_, pathsArray), @@ -81,7 +81,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBFieldMask__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBMessage.m b/Pods/Protobuf/objectivec/GPBMessage.m index 3d5eccd..140c6a2 100644 --- a/Pods/Protobuf/objectivec/GPBMessage.m +++ b/Pods/Protobuf/objectivec/GPBMessage.m @@ -99,15 +99,13 @@ static id CreateArrayForField(GPBFieldDescriptor *field, GPBMessage *autocreator) __attribute__((ns_returns_retained)); static id GetOrCreateArrayIvarWithField(GPBMessage *self, - GPBFieldDescriptor *field, - GPBFileSyntax syntax); + GPBFieldDescriptor *field); static id GetArrayIvarWithField(GPBMessage *self, GPBFieldDescriptor *field); static id CreateMapForField(GPBFieldDescriptor *field, GPBMessage *autocreator) __attribute__((ns_returns_retained)); static id GetOrCreateMapIvarWithField(GPBMessage *self, - GPBFieldDescriptor *field, - GPBFileSyntax syntax); + GPBFieldDescriptor *field); static id GetMapIvarWithField(GPBMessage *self, GPBFieldDescriptor *field); static NSMutableDictionary *CloneExtensionMap(NSDictionary *extensionMap, NSZone *zone) @@ -560,25 +558,24 @@ static id CreateMapForField(GPBFieldDescriptor *field, #if !defined(__clang_analyzer__) // These functions are blocked from the analyzer because the analyzer sees the -// GPBSetRetainedObjectIvarWithFieldInternal() call as consuming the array/map, +// GPBSetRetainedObjectIvarWithFieldPrivate() call as consuming the array/map, // so use of the array/map after the call returns is flagged as a use after // free. -// But GPBSetRetainedObjectIvarWithFieldInternal() is "consuming" the retain -// count be holding onto the object (it is transfering it), the object is +// But GPBSetRetainedObjectIvarWithFieldPrivate() is "consuming" the retain +// count be holding onto the object (it is transferring it), the object is // still valid after returning from the call. The other way to avoid this // would be to add a -retain/-autorelease, but that would force every // repeated/map field parsed into the autorelease pool which is both a memory // and performance hit. static id GetOrCreateArrayIvarWithField(GPBMessage *self, - GPBFieldDescriptor *field, - GPBFileSyntax syntax) { + GPBFieldDescriptor *field) { id array = GPBGetObjectIvarWithFieldNoAutocreate(self, field); if (!array) { // No lock needed, this is called from places expecting to mutate // so no threading protection is needed. array = CreateArrayForField(field, nil); - GPBSetRetainedObjectIvarWithFieldInternal(self, field, array, syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, array); } return array; } @@ -602,14 +599,13 @@ static id GetArrayIvarWithField(GPBMessage *self, GPBFieldDescriptor *field) { } static id GetOrCreateMapIvarWithField(GPBMessage *self, - GPBFieldDescriptor *field, - GPBFileSyntax syntax) { + GPBFieldDescriptor *field) { id dict = GPBGetObjectIvarWithFieldNoAutocreate(self, field); if (!dict) { // No lock needed, this is called from places expecting to mutate // so no threading protection is needed. dict = CreateMapForField(field, nil); - GPBSetRetainedObjectIvarWithFieldInternal(self, field, dict, syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, dict); } return dict; } @@ -668,9 +664,8 @@ void GPBBecomeVisibleToAutocreator(GPBMessage *self) { // This will recursively make all parent messages visible until it reaches a // super-creator that's visible. if (self->autocreatorField_) { - GPBFileSyntax syntax = [self->autocreator_ descriptor].file.syntax; - GPBSetObjectIvarWithFieldInternal(self->autocreator_, - self->autocreatorField_, self, syntax); + GPBSetObjectIvarWithFieldPrivate(self->autocreator_, + self->autocreatorField_, self); } else { [self->autocreator_ setExtension:self->autocreatorExtension_ value:self]; } @@ -936,8 +931,6 @@ - (void)copyFieldsInto:(GPBMessage *)message // Copy all the storage... memcpy(message->messageStorage_, messageStorage_, descriptor->storageSize_); - GPBFileSyntax syntax = descriptor.file.syntax; - // Loop over the fields doing fixup... for (GPBFieldDescriptor *field in descriptor->fields_) { if (GPBFieldIsMapOrArray(field)) { @@ -1005,8 +998,7 @@ - (void)copyFieldsInto:(GPBMessage *)message // We retain here because the memcpy picked up the pointer value and // the next call to SetRetainedObject... will release the current value. [value retain]; - GPBSetRetainedObjectIvarWithFieldInternal(message, field, newValue, - syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(message, field, newValue); } } else if (GPBFieldDataTypeIsMessage(field)) { // For object types, if we have a value, copy it. If we don't, @@ -1018,8 +1010,7 @@ - (void)copyFieldsInto:(GPBMessage *)message // We retain here because the memcpy picked up the pointer value and // the next call to SetRetainedObject... will release the current value. [value retain]; - GPBSetRetainedObjectIvarWithFieldInternal(message, field, newValue, - syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(message, field, newValue); } else { uint8_t *storage = (uint8_t *)message->messageStorage_; id *typePtr = (id *)&storage[field->description_->offset]; @@ -1033,8 +1024,7 @@ - (void)copyFieldsInto:(GPBMessage *)message // We retain here because the memcpy picked up the pointer value and // the next call to SetRetainedObject... will release the current value. [value retain]; - GPBSetRetainedObjectIvarWithFieldInternal(message, field, newValue, - syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(message, field, newValue); } else { // memcpy took care of the rest of the primitive fields if they were set. } @@ -1376,6 +1366,7 @@ - (void)writeField:(GPBFieldDescriptor *)field //%PDDM-EXPAND FIELD_CASE(Bool, Bool) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeBool: if (fieldType == GPBFieldTypeRepeated) { @@ -1394,8 +1385,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(Fixed32, UInt32) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeFixed32: if (fieldType == GPBFieldTypeRepeated) { @@ -1414,8 +1407,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(SFixed32, Int32) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeSFixed32: if (fieldType == GPBFieldTypeRepeated) { @@ -1434,8 +1429,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(Float, Float) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeFloat: if (fieldType == GPBFieldTypeRepeated) { @@ -1454,8 +1451,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(Fixed64, UInt64) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeFixed64: if (fieldType == GPBFieldTypeRepeated) { @@ -1474,8 +1473,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(SFixed64, Int64) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeSFixed64: if (fieldType == GPBFieldTypeRepeated) { @@ -1494,8 +1495,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(Double, Double) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeDouble: if (fieldType == GPBFieldTypeRepeated) { @@ -1514,8 +1517,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(Int32, Int32) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeInt32: if (fieldType == GPBFieldTypeRepeated) { @@ -1534,8 +1539,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(Int64, Int64) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeInt64: if (fieldType == GPBFieldTypeRepeated) { @@ -1554,8 +1561,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(SInt32, Int32) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeSInt32: if (fieldType == GPBFieldTypeRepeated) { @@ -1574,8 +1583,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(SInt64, Int64) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeSInt64: if (fieldType == GPBFieldTypeRepeated) { @@ -1594,8 +1605,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(UInt32, UInt32) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeUInt32: if (fieldType == GPBFieldTypeRepeated) { @@ -1614,8 +1627,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE(UInt64, UInt64) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeUInt64: if (fieldType == GPBFieldTypeRepeated) { @@ -1634,8 +1649,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE_FULL(Enum, Int32, Enum) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeEnum: if (fieldType == GPBFieldTypeRepeated) { @@ -1654,8 +1671,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE2(Bytes) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeBytes: if (fieldType == GPBFieldTypeRepeated) { @@ -1678,8 +1697,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE2(String) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeString: if (fieldType == GPBFieldTypeRepeated) { @@ -1702,8 +1723,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE2(Message) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeMessage: if (fieldType == GPBFieldTypeRepeated) { @@ -1726,8 +1749,10 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND FIELD_CASE2(Group) // This block of code is generated, do not edit it directly. +// clang-format off case GPBDataTypeGroup: if (fieldType == GPBFieldTypeRepeated) { @@ -1750,6 +1775,7 @@ - (void)writeField:(GPBFieldDescriptor *)field } break; +// clang-format on //%PDDM-EXPAND-END (18 expansions) } } @@ -2125,13 +2151,13 @@ static void MergeSingleFieldFromCodedInputStream( #define CASE_SINGLE_POD(NAME, TYPE, FUNC_TYPE) \ case GPBDataType##NAME: { \ TYPE val = GPBCodedInputStreamRead##NAME(&input->state_); \ - GPBSet##FUNC_TYPE##IvarWithFieldInternal(self, field, val, syntax); \ + GPBSet##FUNC_TYPE##IvarWithFieldPrivate(self, field, val); \ break; \ } #define CASE_SINGLE_OBJECT(NAME) \ case GPBDataType##NAME: { \ id val = GPBCodedInputStreamReadRetained##NAME(&input->state_); \ - GPBSetRetainedObjectIvarWithFieldInternal(self, field, val, syntax); \ + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, val); \ break; \ } CASE_SINGLE_POD(Bool, BOOL, Bool) @@ -2162,7 +2188,7 @@ static void MergeSingleFieldFromCodedInputStream( } else { GPBMessage *message = [[field.msgClass alloc] init]; [input readMessage:message extensionRegistry:extensionRegistry]; - GPBSetRetainedObjectIvarWithFieldInternal(self, field, message, syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, message); } break; } @@ -2181,7 +2207,7 @@ static void MergeSingleFieldFromCodedInputStream( [input readGroup:GPBFieldNumber(field) message:message extensionRegistry:extensionRegistry]; - GPBSetRetainedObjectIvarWithFieldInternal(self, field, message, syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, message); } break; } @@ -2190,7 +2216,7 @@ static void MergeSingleFieldFromCodedInputStream( int32_t val = GPBCodedInputStreamReadEnum(&input->state_); if (GPBHasPreservingUnknownEnumSemantics(syntax) || [field isValidEnumValue:val]) { - GPBSetInt32IvarWithFieldInternal(self, field, val, syntax); + GPBSetInt32IvarWithFieldPrivate(self, field, val); } else { GPBUnknownFieldSet *unknownFields = GetOrMakeUnknownFields(self); [unknownFields mergeVarintField:GPBFieldNumber(field) value:val]; @@ -2204,7 +2230,7 @@ static void MergeRepeatedPackedFieldFromCodedInputStream( GPBCodedInputStream *input) { GPBDataType fieldDataType = GPBGetFieldDataType(field); GPBCodedInputStreamState *state = &input->state_; - id genericArray = GetOrCreateArrayIvarWithField(self, field, syntax); + id genericArray = GetOrCreateArrayIvarWithField(self, field); int32_t length = GPBCodedInputStreamReadInt32(state); size_t limit = GPBCodedInputStreamPushLimit(state, length); while (GPBCodedInputStreamBytesUntilLimit(state) > 0) { @@ -2257,7 +2283,7 @@ static void MergeRepeatedNotPackedFieldFromCodedInputStream( GPBMessage *self, GPBFieldDescriptor *field, GPBFileSyntax syntax, GPBCodedInputStream *input, GPBExtensionRegistry *extensionRegistry) { GPBCodedInputStreamState *state = &input->state_; - id genericArray = GetOrCreateArrayIvarWithField(self, field, syntax); + id genericArray = GetOrCreateArrayIvarWithField(self, field); switch (GPBGetFieldDataType(field)) { #define CASE_REPEATED_NOT_PACKED_POD(NAME, TYPE, ARRAY_TYPE) \ case GPBDataType##NAME: { \ @@ -2359,7 +2385,7 @@ - (void)mergeFromCodedInputStream:(GPBCodedInputStream *)input } else { // fieldType == GPBFieldTypeMap // GPB*Dictionary or NSDictionary, exact type doesn't matter at this // point. - id map = GetOrCreateMapIvarWithField(self, fieldDescriptor, syntax); + id map = GetOrCreateMapIvarWithField(self, fieldDescriptor); [input readMapEntry:map extensionRegistry:extensionRegistry field:fieldDescriptor @@ -2433,7 +2459,6 @@ - (void)mergeFrom:(GPBMessage *)other { GPBBecomeVisibleToAutocreator(self); GPBDescriptor *descriptor = [[self class] descriptor]; - GPBFileSyntax syntax = descriptor.file.syntax; for (GPBFieldDescriptor *field in descriptor->fields_) { GPBFieldType fieldType = field.fieldType; @@ -2447,44 +2472,44 @@ - (void)mergeFrom:(GPBMessage *)other { GPBDataType fieldDataType = GPBGetFieldDataType(field); switch (fieldDataType) { case GPBDataTypeBool: - GPBSetBoolIvarWithFieldInternal( - self, field, GPBGetMessageBoolField(other, field), syntax); + GPBSetBoolIvarWithFieldPrivate( + self, field, GPBGetMessageBoolField(other, field)); break; case GPBDataTypeSFixed32: case GPBDataTypeEnum: case GPBDataTypeInt32: case GPBDataTypeSInt32: - GPBSetInt32IvarWithFieldInternal( - self, field, GPBGetMessageInt32Field(other, field), syntax); + GPBSetInt32IvarWithFieldPrivate( + self, field, GPBGetMessageInt32Field(other, field)); break; case GPBDataTypeFixed32: case GPBDataTypeUInt32: - GPBSetUInt32IvarWithFieldInternal( - self, field, GPBGetMessageUInt32Field(other, field), syntax); + GPBSetUInt32IvarWithFieldPrivate( + self, field, GPBGetMessageUInt32Field(other, field)); break; case GPBDataTypeSFixed64: case GPBDataTypeInt64: case GPBDataTypeSInt64: - GPBSetInt64IvarWithFieldInternal( - self, field, GPBGetMessageInt64Field(other, field), syntax); + GPBSetInt64IvarWithFieldPrivate( + self, field, GPBGetMessageInt64Field(other, field)); break; case GPBDataTypeFixed64: case GPBDataTypeUInt64: - GPBSetUInt64IvarWithFieldInternal( - self, field, GPBGetMessageUInt64Field(other, field), syntax); + GPBSetUInt64IvarWithFieldPrivate( + self, field, GPBGetMessageUInt64Field(other, field)); break; case GPBDataTypeFloat: - GPBSetFloatIvarWithFieldInternal( - self, field, GPBGetMessageFloatField(other, field), syntax); + GPBSetFloatIvarWithFieldPrivate( + self, field, GPBGetMessageFloatField(other, field)); break; case GPBDataTypeDouble: - GPBSetDoubleIvarWithFieldInternal( - self, field, GPBGetMessageDoubleField(other, field), syntax); + GPBSetDoubleIvarWithFieldPrivate( + self, field, GPBGetMessageDoubleField(other, field)); break; case GPBDataTypeBytes: case GPBDataTypeString: { id otherVal = GPBGetObjectIvarWithFieldNoAutocreate(other, field); - GPBSetObjectIvarWithFieldInternal(self, field, otherVal, syntax); + GPBSetObjectIvarWithFieldPrivate(self, field, otherVal); break; } case GPBDataTypeMessage: @@ -2496,8 +2521,7 @@ - (void)mergeFrom:(GPBMessage *)other { [message mergeFrom:otherVal]; } else { GPBMessage *message = [otherVal copy]; - GPBSetRetainedObjectIvarWithFieldInternal(self, field, message, - syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, message); } break; } @@ -2511,17 +2535,17 @@ - (void)mergeFrom:(GPBMessage *)other { GPBDataType fieldDataType = field->description_->dataType; if (GPBDataTypeIsObject(fieldDataType)) { NSMutableArray *resultArray = - GetOrCreateArrayIvarWithField(self, field, syntax); + GetOrCreateArrayIvarWithField(self, field); [resultArray addObjectsFromArray:otherArray]; } else if (fieldDataType == GPBDataTypeEnum) { GPBEnumArray *resultArray = - GetOrCreateArrayIvarWithField(self, field, syntax); + GetOrCreateArrayIvarWithField(self, field); [resultArray addRawValuesFromArray:otherArray]; } else { - // The array type doesn't matter, that all implment + // The array type doesn't matter, that all implement // -addValuesFromArray:. GPBInt32Array *resultArray = - GetOrCreateArrayIvarWithField(self, field, syntax); + GetOrCreateArrayIvarWithField(self, field); [resultArray addValuesFromArray:otherArray]; } } @@ -2535,19 +2559,19 @@ - (void)mergeFrom:(GPBMessage *)other { if (GPBDataTypeIsObject(keyDataType) && GPBDataTypeIsObject(valueDataType)) { NSMutableDictionary *resultDict = - GetOrCreateMapIvarWithField(self, field, syntax); + GetOrCreateMapIvarWithField(self, field); [resultDict addEntriesFromDictionary:otherDict]; } else if (valueDataType == GPBDataTypeEnum) { // The exact type doesn't matter, just need to know it is a // GPB*EnumDictionary. GPBInt32EnumDictionary *resultDict = - GetOrCreateMapIvarWithField(self, field, syntax); + GetOrCreateMapIvarWithField(self, field); [resultDict addRawEntriesFromDictionary:otherDict]; } else { // The exact type doesn't matter, they all implement // -addEntriesFromDictionary:. GPBInt32Int32Dictionary *resultDict = - GetOrCreateMapIvarWithField(self, field, syntax); + GetOrCreateMapIvarWithField(self, field); [resultDict addEntriesFromDictionary:otherDict]; } } @@ -3079,14 +3103,13 @@ static void ResolveIvarGet(__unsafe_unretained GPBFieldDescriptor *field, // See comment about __unsafe_unretained on ResolveIvarGet. static void ResolveIvarSet(__unsafe_unretained GPBFieldDescriptor *field, - GPBFileSyntax syntax, ResolveIvarAccessorMethodResult *result) { GPBDataType fieldDataType = GPBGetFieldDataType(field); switch (fieldDataType) { #define CASE_SET(NAME, TYPE, TRUE_NAME) \ case GPBDataType##NAME: { \ result->impToAdd = imp_implementationWithBlock(^(id obj, TYPE value) { \ - return GPBSet##TRUE_NAME##IvarWithFieldInternal(obj, field, value, syntax); \ + return GPBSet##TRUE_NAME##IvarWithFieldPrivate(obj, field, value); \ }); \ result->encodingSelector = @selector(set##NAME:); \ break; \ @@ -3094,7 +3117,7 @@ static void ResolveIvarSet(__unsafe_unretained GPBFieldDescriptor *field, #define CASE_SET_COPY(NAME) \ case GPBDataType##NAME: { \ result->impToAdd = imp_implementationWithBlock(^(id obj, id value) { \ - return GPBSetRetainedObjectIvarWithFieldInternal(obj, field, [value copy], syntax); \ + return GPBSetRetainedObjectIvarWithFieldPrivate(obj, field, [value copy]); \ }); \ result->encodingSelector = @selector(set##NAME:); \ break; \ @@ -3141,7 +3164,7 @@ + (BOOL)resolveInstanceMethod:(SEL)sel { ResolveIvarGet(field, &result); break; } else if (sel == field->setSel_) { - ResolveIvarSet(field, descriptor.file.syntax, &result); + ResolveIvarSet(field, &result); break; } else if (sel == field->hasOrCountSel_) { int32_t index = GPBFieldHasIndex(field); @@ -3191,9 +3214,8 @@ + (BOOL)resolveInstanceMethod:(SEL)sel { } else if (sel == field->setSel_) { // Local for syntax so the block can directly capture it and not the // full lookup. - const GPBFileSyntax syntax = descriptor.file.syntax; result.impToAdd = imp_implementationWithBlock(^(id obj, id value) { - GPBSetObjectIvarWithFieldInternal(obj, field, value, syntax); + GPBSetObjectIvarWithFieldPrivate(obj, field, value); }); result.encodingSelector = @selector(setArray:); break; @@ -3298,9 +3320,7 @@ id GPBGetMessageRepeatedField(GPBMessage *self, GPBFieldDescriptor *field) { [self class], field.name]; } #endif - GPBDescriptor *descriptor = [[self class] descriptor]; - GPBFileSyntax syntax = descriptor.file.syntax; - return GetOrCreateArrayIvarWithField(self, field, syntax); + return GetOrCreateArrayIvarWithField(self, field); } // Only exists for public api, no core code should use this. @@ -3312,9 +3332,7 @@ id GPBGetMessageMapField(GPBMessage *self, GPBFieldDescriptor *field) { [self class], field.name]; } #endif - GPBDescriptor *descriptor = [[self class] descriptor]; - GPBFileSyntax syntax = descriptor.file.syntax; - return GetOrCreateMapIvarWithField(self, field, syntax); + return GetOrCreateMapIvarWithField(self, field); } id GPBGetObjectIvarWithField(GPBMessage *self, GPBFieldDescriptor *field) { diff --git a/Pods/Protobuf/objectivec/GPBProtocolBuffers.h b/Pods/Protobuf/objectivec/GPBProtocolBuffers.h index 32f9f5d..c5df916 100644 --- a/Pods/Protobuf/objectivec/GPBProtocolBuffers.h +++ b/Pods/Protobuf/objectivec/GPBProtocolBuffers.h @@ -52,25 +52,25 @@ // Well-known proto types #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import - #import - #import - #import - #import - #import - #import - #import + #import + #import + #import + #import + #import + #import + #import + #import + #import + #import #else - #import "google/protobuf/Any.pbobjc.h" - #import "google/protobuf/Api.pbobjc.h" - #import "google/protobuf/Duration.pbobjc.h" - #import "google/protobuf/Empty.pbobjc.h" - #import "google/protobuf/FieldMask.pbobjc.h" - #import "google/protobuf/SourceContext.pbobjc.h" - #import "google/protobuf/Struct.pbobjc.h" - #import "google/protobuf/Timestamp.pbobjc.h" - #import "google/protobuf/Type.pbobjc.h" - #import "google/protobuf/Wrappers.pbobjc.h" + #import "GPBAny.pbobjc.h" + #import "GPBApi.pbobjc.h" + #import "GPBDuration.pbobjc.h" + #import "GPBEmpty.pbobjc.h" + #import "GPBFieldMask.pbobjc.h" + #import "GPBSourceContext.pbobjc.h" + #import "GPBStruct.pbobjc.h" + #import "GPBTimestamp.pbobjc.h" + #import "GPBType.pbobjc.h" + #import "GPBWrappers.pbobjc.h" #endif diff --git a/Pods/Protobuf/objectivec/GPBRuntimeTypes.h b/Pods/Protobuf/objectivec/GPBRuntimeTypes.h index 8148054..9c1083a 100644 --- a/Pods/Protobuf/objectivec/GPBRuntimeTypes.h +++ b/Pods/Protobuf/objectivec/GPBRuntimeTypes.h @@ -142,3 +142,10 @@ typedef struct GPBExtensionRange { /** Exclusive. */ uint32_t end; } GPBExtensionRange; + +/** + A type to represent an Objective C class. + This is actually an `objc_class` but the runtime headers will not allow us to + reference `objc_class`, so we have defined our own. +*/ +typedef struct GPBObjcClass_t GPBObjcClass_t; diff --git a/Pods/Protobuf/objectivec/GPBSourceContext.pbobjc.h b/Pods/Protobuf/objectivec/GPBSourceContext.pbobjc.h new file mode 100644 index 0000000..7a10336 --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBSourceContext.pbobjc.h @@ -0,0 +1,77 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/source_context.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBSourceContextRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBSourceContextRoot : GPBRootObject +@end + +#pragma mark - GPBSourceContext + +typedef GPB_ENUM(GPBSourceContext_FieldNumber) { + GPBSourceContext_FieldNumber_FileName = 1, +}; + +/** + * `SourceContext` represents information about the source of a + * protobuf element, like the file in which it is defined. + **/ +GPB_FINAL @interface GPBSourceContext : GPBMessage + +/** + * The path-qualified name of the .proto file that contained the associated + * protobuf element. For example: `"google/protobuf/source_context.proto"`. + **/ +@property(nonatomic, readwrite, copy, null_resettable) NSString *fileName; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/SourceContext.pbobjc.m b/Pods/Protobuf/objectivec/GPBSourceContext.pbobjc.m similarity index 86% rename from Pods/Protobuf/objectivec/google/protobuf/SourceContext.pbobjc.m rename to Pods/Protobuf/objectivec/GPBSourceContext.pbobjc.m index c955f2b..b3e6fa7 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/SourceContext.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBSourceContext.pbobjc.m @@ -8,15 +8,15 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/SourceContext.pbobjc.h" + #import "GPBSourceContext.pbobjc.h" #endif // @@protoc_insertion_point(imports) @@ -66,11 +66,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "fileName", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBSourceContext_FieldNumber_FileName, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBSourceContext__storage_, fileName), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, }; @@ -81,7 +81,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBSourceContext__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBStruct.pbobjc.h b/Pods/Protobuf/objectivec/GPBStruct.pbobjc.h new file mode 100644 index 0000000..e36df3f --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBStruct.pbobjc.h @@ -0,0 +1,204 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/struct.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +@class GPBListValue; +@class GPBStruct; +@class GPBValue; + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - Enum GPBNullValue + +/** + * `NullValue` is a singleton enumeration to represent the null value for the + * `Value` type union. + * + * The JSON representation for `NullValue` is JSON `null`. + **/ +typedef GPB_ENUM(GPBNullValue) { + /** + * Value used if any message's field encounters a value that is not defined + * by this enum. The message will also have C functions to get/set the rawValue + * of the field. + **/ + GPBNullValue_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, + /** Null value. */ + GPBNullValue_NullValue = 0, +}; + +GPBEnumDescriptor *GPBNullValue_EnumDescriptor(void); + +/** + * Checks to see if the given value is defined by the enum or was not known at + * the time this source was generated. + **/ +BOOL GPBNullValue_IsValidValue(int32_t value); + +#pragma mark - GPBStructRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBStructRoot : GPBRootObject +@end + +#pragma mark - GPBStruct + +typedef GPB_ENUM(GPBStruct_FieldNumber) { + GPBStruct_FieldNumber_Fields = 1, +}; + +/** + * `Struct` represents a structured data value, consisting of fields + * which map to dynamically typed values. In some languages, `Struct` + * might be supported by a native representation. For example, in + * scripting languages like JS a struct is represented as an + * object. The details of that representation are described together + * with the proto support for the language. + * + * The JSON representation for `Struct` is JSON object. + **/ +GPB_FINAL @interface GPBStruct : GPBMessage + +/** Unordered map of dynamically typed values. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableDictionary *fields; +/** The number of items in @c fields without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger fields_Count; + +@end + +#pragma mark - GPBValue + +typedef GPB_ENUM(GPBValue_FieldNumber) { + GPBValue_FieldNumber_NullValue = 1, + GPBValue_FieldNumber_NumberValue = 2, + GPBValue_FieldNumber_StringValue = 3, + GPBValue_FieldNumber_BoolValue = 4, + GPBValue_FieldNumber_StructValue = 5, + GPBValue_FieldNumber_ListValue = 6, +}; + +typedef GPB_ENUM(GPBValue_Kind_OneOfCase) { + GPBValue_Kind_OneOfCase_GPBUnsetOneOfCase = 0, + GPBValue_Kind_OneOfCase_NullValue = 1, + GPBValue_Kind_OneOfCase_NumberValue = 2, + GPBValue_Kind_OneOfCase_StringValue = 3, + GPBValue_Kind_OneOfCase_BoolValue = 4, + GPBValue_Kind_OneOfCase_StructValue = 5, + GPBValue_Kind_OneOfCase_ListValue = 6, +}; + +/** + * `Value` represents a dynamically typed value which can be either + * null, a number, a string, a boolean, a recursive struct value, or a + * list of values. A producer of value is expected to set one of that + * variants, absence of any variant indicates an error. + * + * The JSON representation for `Value` is JSON value. + **/ +GPB_FINAL @interface GPBValue : GPBMessage + +/** The kind of value. */ +@property(nonatomic, readonly) GPBValue_Kind_OneOfCase kindOneOfCase; + +/** Represents a null value. */ +@property(nonatomic, readwrite) GPBNullValue nullValue; + +/** Represents a double value. */ +@property(nonatomic, readwrite) double numberValue; + +/** Represents a string value. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *stringValue; + +/** Represents a boolean value. */ +@property(nonatomic, readwrite) BOOL boolValue; + +/** Represents a structured value. */ +@property(nonatomic, readwrite, strong, null_resettable) GPBStruct *structValue; + +/** Represents a repeated `Value`. */ +@property(nonatomic, readwrite, strong, null_resettable) GPBListValue *listValue; + +@end + +/** + * Fetches the raw value of a @c GPBValue's @c nullValue property, even + * if the value was not defined by the enum at the time the code was generated. + **/ +int32_t GPBValue_NullValue_RawValue(GPBValue *message); +/** + * Sets the raw value of an @c GPBValue's @c nullValue property, allowing + * it to be set to a value that was not defined by the enum at the time the code + * was generated. + **/ +void SetGPBValue_NullValue_RawValue(GPBValue *message, int32_t value); + +/** + * Clears whatever value was set for the oneof 'kind'. + **/ +void GPBValue_ClearKindOneOfCase(GPBValue *message); + +#pragma mark - GPBListValue + +typedef GPB_ENUM(GPBListValue_FieldNumber) { + GPBListValue_FieldNumber_ValuesArray = 1, +}; + +/** + * `ListValue` is a wrapper around a repeated field of values. + * + * The JSON representation for `ListValue` is JSON array. + **/ +GPB_FINAL @interface GPBListValue : GPBMessage + +/** Repeated field of dynamically typed values. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *valuesArray; +/** The number of items in @c valuesArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger valuesArray_Count; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Struct.pbobjc.m b/Pods/Protobuf/objectivec/GPBStruct.pbobjc.m similarity index 84% rename from Pods/Protobuf/objectivec/google/protobuf/Struct.pbobjc.m rename to Pods/Protobuf/objectivec/GPBStruct.pbobjc.m index 3873f5a..554046a 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Struct.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBStruct.pbobjc.m @@ -8,7 +8,7 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif @@ -16,15 +16,24 @@ #import #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/Struct.pbobjc.h" + #import "GPBStruct.pbobjc.h" #endif // @@protoc_insertion_point(imports) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" #pragma clang diagnostic ignored "-Wdirect-ivar-access" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#pragma mark - Objective C Class declarations +// Forward declarations of Objective C classes that we can use as +// static values in struct initializers. +// We don't use [Foo class] because it is not a static value. +GPBObjCClassDeclaration(GPBListValue); +GPBObjCClassDeclaration(GPBStruct); +GPBObjCClassDeclaration(GPBValue); #pragma mark - GPBStructRoot @@ -102,7 +111,7 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "fields", - .dataTypeSpecific.className = GPBStringifySymbol(GPBValue), + .dataTypeSpecific.clazz = GPBObjCClass(GPBValue), .number = GPBStruct_FieldNumber_Fields, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBStruct__storage_, fields), @@ -117,7 +126,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBStruct__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -166,7 +175,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "numberValue", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBValue_FieldNumber_NumberValue, .hasIndex = -1, .offset = (uint32_t)offsetof(GPBValue__storage_, numberValue), @@ -175,7 +184,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "stringValue", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBValue_FieldNumber_StringValue, .hasIndex = -1, .offset = (uint32_t)offsetof(GPBValue__storage_, stringValue), @@ -184,7 +193,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "boolValue", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBValue_FieldNumber_BoolValue, .hasIndex = -1, .offset = 0, // Stored in _has_storage_ to save space. @@ -193,7 +202,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "structValue", - .dataTypeSpecific.className = GPBStringifySymbol(GPBStruct), + .dataTypeSpecific.clazz = GPBObjCClass(GPBStruct), .number = GPBValue_FieldNumber_StructValue, .hasIndex = -1, .offset = (uint32_t)offsetof(GPBValue__storage_, structValue), @@ -202,7 +211,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "listValue", - .dataTypeSpecific.className = GPBStringifySymbol(GPBListValue), + .dataTypeSpecific.clazz = GPBObjCClass(GPBListValue), .number = GPBValue_FieldNumber_ListValue, .hasIndex = -1, .offset = (uint32_t)offsetof(GPBValue__storage_, listValue), @@ -217,7 +226,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; static const char *oneofs[] = { "kind", }; @@ -237,19 +246,19 @@ + (GPBDescriptor *)descriptor { int32_t GPBValue_NullValue_RawValue(GPBValue *message) { GPBDescriptor *descriptor = [GPBValue descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBValue_FieldNumber_NullValue]; - return GPBGetMessageInt32Field(message, field); + return GPBGetMessageRawEnumField(message, field); } void SetGPBValue_NullValue_RawValue(GPBValue *message, int32_t value) { GPBDescriptor *descriptor = [GPBValue descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBValue_FieldNumber_NullValue]; - GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax); + GPBSetMessageRawEnumField(message, field, value); } void GPBValue_ClearKindOneOfCase(GPBValue *message) { - GPBDescriptor *descriptor = [message descriptor]; + GPBDescriptor *descriptor = [GPBValue descriptor]; GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0]; - GPBMaybeClearOneof(message, oneof, -1, 0); + GPBClearOneof(message, oneof); } #pragma mark - GPBListValue @@ -270,7 +279,7 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "valuesArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBValue), + .dataTypeSpecific.clazz = GPBObjCClass(GPBValue), .number = GPBListValue_FieldNumber_ValuesArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBListValue__storage_, valuesArray), @@ -285,7 +294,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBListValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBTimestamp.pbobjc.h b/Pods/Protobuf/objectivec/GPBTimestamp.pbobjc.h new file mode 100644 index 0000000..92f0bac --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBTimestamp.pbobjc.h @@ -0,0 +1,167 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/timestamp.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBTimestampRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBTimestampRoot : GPBRootObject +@end + +#pragma mark - GPBTimestamp + +typedef GPB_ENUM(GPBTimestamp_FieldNumber) { + GPBTimestamp_FieldNumber_Seconds = 1, + GPBTimestamp_FieldNumber_Nanos = 2, +}; + +/** + * A Timestamp represents a point in time independent of any time zone or local + * calendar, encoded as a count of seconds and fractions of seconds at + * nanosecond resolution. The count is relative to an epoch at UTC midnight on + * January 1, 1970, in the proleptic Gregorian calendar which extends the + * Gregorian calendar backwards to year one. + * + * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap + * second table is needed for interpretation, using a [24-hour linear + * smear](https://developers.google.com/time/smear). + * + * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By + * restricting to that range, we ensure that we can convert to and from [RFC + * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. + * + * # Examples + * + * Example 1: Compute Timestamp from POSIX `time()`. + * + * Timestamp timestamp; + * timestamp.set_seconds(time(NULL)); + * timestamp.set_nanos(0); + * + * Example 2: Compute Timestamp from POSIX `gettimeofday()`. + * + * struct timeval tv; + * gettimeofday(&tv, NULL); + * + * Timestamp timestamp; + * timestamp.set_seconds(tv.tv_sec); + * timestamp.set_nanos(tv.tv_usec * 1000); + * + * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. + * + * FILETIME ft; + * GetSystemTimeAsFileTime(&ft); + * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; + * + * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z + * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. + * Timestamp timestamp; + * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); + * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); + * + * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. + * + * long millis = System.currentTimeMillis(); + * + * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) + * .setNanos((int) ((millis % 1000) * 1000000)).build(); + * + * + * Example 5: Compute Timestamp from current time in Python. + * + * timestamp = Timestamp() + * timestamp.GetCurrentTime() + * + * # JSON Mapping + * + * In JSON format, the Timestamp type is encoded as a string in the + * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the + * format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" + * where {year} is always expressed using four digits while {month}, {day}, + * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional + * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), + * are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone + * is required. A proto3 JSON serializer should always use UTC (as indicated by + * "Z") when printing the Timestamp type and a proto3 JSON parser should be + * able to accept both UTC and other timezones (as indicated by an offset). + * + * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past + * 01:30 UTC on January 15, 2017. + * + * In JavaScript, one can convert a Date object to this format using the + * standard + * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) + * method. In Python, a standard `datetime.datetime` object can be converted + * to this format using + * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with + * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use + * the Joda Time's [`ISODateTimeFormat.dateTime()`]( + * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D + * ) to obtain a formatter capable of generating timestamps in this format. + **/ +GPB_FINAL @interface GPBTimestamp : GPBMessage + +/** + * Represents seconds of UTC time since Unix epoch + * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + * 9999-12-31T23:59:59Z inclusive. + **/ +@property(nonatomic, readwrite) int64_t seconds; + +/** + * Non-negative fractions of a second at nanosecond resolution. Negative + * second values with fractions must still have non-negative nanos values + * that count forward in time. Must be from 0 to 999,999,999 + * inclusive. + **/ +@property(nonatomic, readwrite) int32_t nanos; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Timestamp.pbobjc.m b/Pods/Protobuf/objectivec/GPBTimestamp.pbobjc.m similarity index 84% rename from Pods/Protobuf/objectivec/google/protobuf/Timestamp.pbobjc.m rename to Pods/Protobuf/objectivec/GPBTimestamp.pbobjc.m index 05eb3a5..736a75d 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Timestamp.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBTimestamp.pbobjc.m @@ -8,15 +8,15 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/Timestamp.pbobjc.h" + #import "GPBTimestamp.pbobjc.h" #endif // @@protoc_insertion_point(imports) @@ -68,20 +68,20 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "seconds", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBTimestamp_FieldNumber_Seconds, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBTimestamp__storage_, seconds), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt64, }, { .name = "nanos", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBTimestamp_FieldNumber_Nanos, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBTimestamp__storage_, nanos), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt32, }, }; @@ -92,7 +92,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBTimestamp__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBType.pbobjc.h b/Pods/Protobuf/objectivec/GPBType.pbobjc.h new file mode 100644 index 0000000..747e15d --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBType.pbobjc.h @@ -0,0 +1,444 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/type.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +@class GPBAny; +@class GPBEnumValue; +@class GPBField; +@class GPBOption; +@class GPBSourceContext; + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - Enum GPBSyntax + +/** The syntax in which a protocol buffer element is defined. */ +typedef GPB_ENUM(GPBSyntax) { + /** + * Value used if any message's field encounters a value that is not defined + * by this enum. The message will also have C functions to get/set the rawValue + * of the field. + **/ + GPBSyntax_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, + /** Syntax `proto2`. */ + GPBSyntax_SyntaxProto2 = 0, + + /** Syntax `proto3`. */ + GPBSyntax_SyntaxProto3 = 1, +}; + +GPBEnumDescriptor *GPBSyntax_EnumDescriptor(void); + +/** + * Checks to see if the given value is defined by the enum or was not known at + * the time this source was generated. + **/ +BOOL GPBSyntax_IsValidValue(int32_t value); + +#pragma mark - Enum GPBField_Kind + +/** Basic field types. */ +typedef GPB_ENUM(GPBField_Kind) { + /** + * Value used if any message's field encounters a value that is not defined + * by this enum. The message will also have C functions to get/set the rawValue + * of the field. + **/ + GPBField_Kind_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, + /** Field type unknown. */ + GPBField_Kind_TypeUnknown = 0, + + /** Field type double. */ + GPBField_Kind_TypeDouble = 1, + + /** Field type float. */ + GPBField_Kind_TypeFloat = 2, + + /** Field type int64. */ + GPBField_Kind_TypeInt64 = 3, + + /** Field type uint64. */ + GPBField_Kind_TypeUint64 = 4, + + /** Field type int32. */ + GPBField_Kind_TypeInt32 = 5, + + /** Field type fixed64. */ + GPBField_Kind_TypeFixed64 = 6, + + /** Field type fixed32. */ + GPBField_Kind_TypeFixed32 = 7, + + /** Field type bool. */ + GPBField_Kind_TypeBool = 8, + + /** Field type string. */ + GPBField_Kind_TypeString = 9, + + /** Field type group. Proto2 syntax only, and deprecated. */ + GPBField_Kind_TypeGroup = 10, + + /** Field type message. */ + GPBField_Kind_TypeMessage = 11, + + /** Field type bytes. */ + GPBField_Kind_TypeBytes = 12, + + /** Field type uint32. */ + GPBField_Kind_TypeUint32 = 13, + + /** Field type enum. */ + GPBField_Kind_TypeEnum = 14, + + /** Field type sfixed32. */ + GPBField_Kind_TypeSfixed32 = 15, + + /** Field type sfixed64. */ + GPBField_Kind_TypeSfixed64 = 16, + + /** Field type sint32. */ + GPBField_Kind_TypeSint32 = 17, + + /** Field type sint64. */ + GPBField_Kind_TypeSint64 = 18, +}; + +GPBEnumDescriptor *GPBField_Kind_EnumDescriptor(void); + +/** + * Checks to see if the given value is defined by the enum or was not known at + * the time this source was generated. + **/ +BOOL GPBField_Kind_IsValidValue(int32_t value); + +#pragma mark - Enum GPBField_Cardinality + +/** Whether a field is optional, required, or repeated. */ +typedef GPB_ENUM(GPBField_Cardinality) { + /** + * Value used if any message's field encounters a value that is not defined + * by this enum. The message will also have C functions to get/set the rawValue + * of the field. + **/ + GPBField_Cardinality_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, + /** For fields with unknown cardinality. */ + GPBField_Cardinality_CardinalityUnknown = 0, + + /** For optional fields. */ + GPBField_Cardinality_CardinalityOptional = 1, + + /** For required fields. Proto2 syntax only. */ + GPBField_Cardinality_CardinalityRequired = 2, + + /** For repeated fields. */ + GPBField_Cardinality_CardinalityRepeated = 3, +}; + +GPBEnumDescriptor *GPBField_Cardinality_EnumDescriptor(void); + +/** + * Checks to see if the given value is defined by the enum or was not known at + * the time this source was generated. + **/ +BOOL GPBField_Cardinality_IsValidValue(int32_t value); + +#pragma mark - GPBTypeRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBTypeRoot : GPBRootObject +@end + +#pragma mark - GPBType + +typedef GPB_ENUM(GPBType_FieldNumber) { + GPBType_FieldNumber_Name = 1, + GPBType_FieldNumber_FieldsArray = 2, + GPBType_FieldNumber_OneofsArray = 3, + GPBType_FieldNumber_OptionsArray = 4, + GPBType_FieldNumber_SourceContext = 5, + GPBType_FieldNumber_Syntax = 6, +}; + +/** + * A protocol buffer message type. + **/ +GPB_FINAL @interface GPBType : GPBMessage + +/** The fully qualified message name. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** The list of fields. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *fieldsArray; +/** The number of items in @c fieldsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger fieldsArray_Count; + +/** The list of types appearing in `oneof` definitions in this type. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *oneofsArray; +/** The number of items in @c oneofsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger oneofsArray_Count; + +/** The protocol buffer options. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; +/** The number of items in @c optionsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger optionsArray_Count; + +/** The source context. */ +@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext; +/** Test to see if @c sourceContext has been set. */ +@property(nonatomic, readwrite) BOOL hasSourceContext; + +/** The source syntax. */ +@property(nonatomic, readwrite) GPBSyntax syntax; + +@end + +/** + * Fetches the raw value of a @c GPBType's @c syntax property, even + * if the value was not defined by the enum at the time the code was generated. + **/ +int32_t GPBType_Syntax_RawValue(GPBType *message); +/** + * Sets the raw value of an @c GPBType's @c syntax property, allowing + * it to be set to a value that was not defined by the enum at the time the code + * was generated. + **/ +void SetGPBType_Syntax_RawValue(GPBType *message, int32_t value); + +#pragma mark - GPBField + +typedef GPB_ENUM(GPBField_FieldNumber) { + GPBField_FieldNumber_Kind = 1, + GPBField_FieldNumber_Cardinality = 2, + GPBField_FieldNumber_Number = 3, + GPBField_FieldNumber_Name = 4, + GPBField_FieldNumber_TypeURL = 6, + GPBField_FieldNumber_OneofIndex = 7, + GPBField_FieldNumber_Packed = 8, + GPBField_FieldNumber_OptionsArray = 9, + GPBField_FieldNumber_JsonName = 10, + GPBField_FieldNumber_DefaultValue = 11, +}; + +/** + * A single field of a message type. + **/ +GPB_FINAL @interface GPBField : GPBMessage + +/** The field type. */ +@property(nonatomic, readwrite) GPBField_Kind kind; + +/** The field cardinality. */ +@property(nonatomic, readwrite) GPBField_Cardinality cardinality; + +/** The field number. */ +@property(nonatomic, readwrite) int32_t number; + +/** The field name. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** + * The field type URL, without the scheme, for message or enumeration + * types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. + **/ +@property(nonatomic, readwrite, copy, null_resettable) NSString *typeURL; + +/** + * The index of the field type in `Type.oneofs`, for message or enumeration + * types. The first type has index 1; zero means the type is not in the list. + **/ +@property(nonatomic, readwrite) int32_t oneofIndex; + +/** Whether to use alternative packed wire representation. */ +@property(nonatomic, readwrite) BOOL packed; + +/** The protocol buffer options. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; +/** The number of items in @c optionsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger optionsArray_Count; + +/** The field JSON name. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *jsonName; + +/** The string value of the default value of this field. Proto2 syntax only. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *defaultValue; + +@end + +/** + * Fetches the raw value of a @c GPBField's @c kind property, even + * if the value was not defined by the enum at the time the code was generated. + **/ +int32_t GPBField_Kind_RawValue(GPBField *message); +/** + * Sets the raw value of an @c GPBField's @c kind property, allowing + * it to be set to a value that was not defined by the enum at the time the code + * was generated. + **/ +void SetGPBField_Kind_RawValue(GPBField *message, int32_t value); + +/** + * Fetches the raw value of a @c GPBField's @c cardinality property, even + * if the value was not defined by the enum at the time the code was generated. + **/ +int32_t GPBField_Cardinality_RawValue(GPBField *message); +/** + * Sets the raw value of an @c GPBField's @c cardinality property, allowing + * it to be set to a value that was not defined by the enum at the time the code + * was generated. + **/ +void SetGPBField_Cardinality_RawValue(GPBField *message, int32_t value); + +#pragma mark - GPBEnum + +typedef GPB_ENUM(GPBEnum_FieldNumber) { + GPBEnum_FieldNumber_Name = 1, + GPBEnum_FieldNumber_EnumvalueArray = 2, + GPBEnum_FieldNumber_OptionsArray = 3, + GPBEnum_FieldNumber_SourceContext = 4, + GPBEnum_FieldNumber_Syntax = 5, +}; + +/** + * Enum type definition. + **/ +GPB_FINAL @interface GPBEnum : GPBMessage + +/** Enum type name. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** Enum value definitions. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *enumvalueArray; +/** The number of items in @c enumvalueArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger enumvalueArray_Count; + +/** Protocol buffer options. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; +/** The number of items in @c optionsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger optionsArray_Count; + +/** The source context. */ +@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext; +/** Test to see if @c sourceContext has been set. */ +@property(nonatomic, readwrite) BOOL hasSourceContext; + +/** The source syntax. */ +@property(nonatomic, readwrite) GPBSyntax syntax; + +@end + +/** + * Fetches the raw value of a @c GPBEnum's @c syntax property, even + * if the value was not defined by the enum at the time the code was generated. + **/ +int32_t GPBEnum_Syntax_RawValue(GPBEnum *message); +/** + * Sets the raw value of an @c GPBEnum's @c syntax property, allowing + * it to be set to a value that was not defined by the enum at the time the code + * was generated. + **/ +void SetGPBEnum_Syntax_RawValue(GPBEnum *message, int32_t value); + +#pragma mark - GPBEnumValue + +typedef GPB_ENUM(GPBEnumValue_FieldNumber) { + GPBEnumValue_FieldNumber_Name = 1, + GPBEnumValue_FieldNumber_Number = 2, + GPBEnumValue_FieldNumber_OptionsArray = 3, +}; + +/** + * Enum value definition. + **/ +GPB_FINAL @interface GPBEnumValue : GPBMessage + +/** Enum value name. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** Enum value number. */ +@property(nonatomic, readwrite) int32_t number; + +/** Protocol buffer options. */ +@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; +/** The number of items in @c optionsArray without causing the array to be created. */ +@property(nonatomic, readonly) NSUInteger optionsArray_Count; + +@end + +#pragma mark - GPBOption + +typedef GPB_ENUM(GPBOption_FieldNumber) { + GPBOption_FieldNumber_Name = 1, + GPBOption_FieldNumber_Value = 2, +}; + +/** + * A protocol buffer option, which can be attached to a message, field, + * enumeration, etc. + **/ +GPB_FINAL @interface GPBOption : GPBMessage + +/** + * The option's name. For protobuf built-in options (options defined in + * descriptor.proto), this is the short name. For example, `"map_entry"`. + * For custom options, it should be the fully-qualified name. For example, + * `"google.api.http"`. + **/ +@property(nonatomic, readwrite, copy, null_resettable) NSString *name; + +/** + * The option's value packed in an Any message. If the value is a primitive, + * the corresponding wrapper type defined in google/protobuf/wrappers.proto + * should be used. If the value is an enum, it should be stored as an int32 + * value using the google.protobuf.Int32Value type. + **/ +@property(nonatomic, readwrite, strong, null_resettable) GPBAny *value; +/** Test to see if @c value has been set. */ +@property(nonatomic, readwrite) BOOL hasValue; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Type.pbobjc.m b/Pods/Protobuf/objectivec/GPBType.pbobjc.m similarity index 83% rename from Pods/Protobuf/objectivec/google/protobuf/Type.pbobjc.m rename to Pods/Protobuf/objectivec/GPBType.pbobjc.m index 7451edc..70dae31 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Type.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBType.pbobjc.m @@ -8,7 +8,7 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif @@ -16,18 +16,29 @@ #import #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import + #import + #import + #import #else - #import "google/protobuf/Type.pbobjc.h" - #import "google/protobuf/Any.pbobjc.h" - #import "google/protobuf/SourceContext.pbobjc.h" + #import "GPBType.pbobjc.h" + #import "GPBAny.pbobjc.h" + #import "GPBSourceContext.pbobjc.h" #endif // @@protoc_insertion_point(imports) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#pragma mark - Objective C Class declarations +// Forward declarations of Objective C classes that we can use as +// static values in struct initializers. +// We don't use [Foo class] because it is not a static value. +GPBObjCClassDeclaration(GPBAny); +GPBObjCClassDeclaration(GPBEnumValue); +GPBObjCClassDeclaration(GPBField); +GPBObjCClassDeclaration(GPBOption); +GPBObjCClassDeclaration(GPBSourceContext); #pragma mark - GPBTypeRoot @@ -117,16 +128,16 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBType_FieldNumber_Name, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBType__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "fieldsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBField), + .dataTypeSpecific.clazz = GPBObjCClass(GPBField), .number = GPBType_FieldNumber_FieldsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBType__storage_, fieldsArray), @@ -135,7 +146,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "oneofsArray", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBType_FieldNumber_OneofsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBType__storage_, oneofsArray), @@ -144,7 +155,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "optionsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBOption), + .dataTypeSpecific.clazz = GPBObjCClass(GPBOption), .number = GPBType_FieldNumber_OptionsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBType__storage_, optionsArray), @@ -153,7 +164,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "sourceContext", - .dataTypeSpecific.className = GPBStringifySymbol(GPBSourceContext), + .dataTypeSpecific.clazz = GPBObjCClass(GPBSourceContext), .number = GPBType_FieldNumber_SourceContext, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBType__storage_, sourceContext), @@ -166,7 +177,7 @@ + (GPBDescriptor *)descriptor { .number = GPBType_FieldNumber_Syntax, .hasIndex = 2, .offset = (uint32_t)offsetof(GPBType__storage_, syntax), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeEnum, }, }; @@ -177,7 +188,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBType__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -191,13 +202,13 @@ + (GPBDescriptor *)descriptor { int32_t GPBType_Syntax_RawValue(GPBType *message) { GPBDescriptor *descriptor = [GPBType descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBType_FieldNumber_Syntax]; - return GPBGetMessageInt32Field(message, field); + return GPBGetMessageRawEnumField(message, field); } void SetGPBType_Syntax_RawValue(GPBType *message, int32_t value) { GPBDescriptor *descriptor = [GPBType descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBType_FieldNumber_Syntax]; - GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax); + GPBSetMessageRawEnumField(message, field, value); } #pragma mark - GPBField @@ -240,7 +251,7 @@ + (GPBDescriptor *)descriptor { .number = GPBField_FieldNumber_Kind, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBField__storage_, kind), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeEnum, }, { @@ -249,57 +260,57 @@ + (GPBDescriptor *)descriptor { .number = GPBField_FieldNumber_Cardinality, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBField__storage_, cardinality), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeEnum, }, { .name = "number", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBField_FieldNumber_Number, .hasIndex = 2, .offset = (uint32_t)offsetof(GPBField__storage_, number), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt32, }, { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBField_FieldNumber_Name, .hasIndex = 3, .offset = (uint32_t)offsetof(GPBField__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "typeURL", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBField_FieldNumber_TypeURL, .hasIndex = 4, .offset = (uint32_t)offsetof(GPBField__storage_, typeURL), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "oneofIndex", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBField_FieldNumber_OneofIndex, .hasIndex = 5, .offset = (uint32_t)offsetof(GPBField__storage_, oneofIndex), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt32, }, { .name = "packed", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBField_FieldNumber_Packed, .hasIndex = 6, .offset = 7, // Stored in _has_storage_ to save space. - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeBool, }, { .name = "optionsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBOption), + .dataTypeSpecific.clazz = GPBObjCClass(GPBOption), .number = GPBField_FieldNumber_OptionsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBField__storage_, optionsArray), @@ -308,20 +319,20 @@ + (GPBDescriptor *)descriptor { }, { .name = "jsonName", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBField_FieldNumber_JsonName, .hasIndex = 8, .offset = (uint32_t)offsetof(GPBField__storage_, jsonName), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "defaultValue", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBField_FieldNumber_DefaultValue, .hasIndex = 9, .offset = (uint32_t)offsetof(GPBField__storage_, defaultValue), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, }; @@ -332,7 +343,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBField__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS static const char *extraTextFormatInfo = "\001\006\004\241!!\000"; @@ -351,25 +362,25 @@ + (GPBDescriptor *)descriptor { int32_t GPBField_Kind_RawValue(GPBField *message) { GPBDescriptor *descriptor = [GPBField descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBField_FieldNumber_Kind]; - return GPBGetMessageInt32Field(message, field); + return GPBGetMessageRawEnumField(message, field); } void SetGPBField_Kind_RawValue(GPBField *message, int32_t value) { GPBDescriptor *descriptor = [GPBField descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBField_FieldNumber_Kind]; - GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax); + GPBSetMessageRawEnumField(message, field, value); } int32_t GPBField_Cardinality_RawValue(GPBField *message) { GPBDescriptor *descriptor = [GPBField descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBField_FieldNumber_Cardinality]; - return GPBGetMessageInt32Field(message, field); + return GPBGetMessageRawEnumField(message, field); } void SetGPBField_Cardinality_RawValue(GPBField *message, int32_t value) { GPBDescriptor *descriptor = [GPBField descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBField_FieldNumber_Cardinality]; - GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax); + GPBSetMessageRawEnumField(message, field, value); } #pragma mark - Enum GPBField_Kind @@ -513,16 +524,16 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBEnum_FieldNumber_Name, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBEnum__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "enumvalueArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBEnumValue), + .dataTypeSpecific.clazz = GPBObjCClass(GPBEnumValue), .number = GPBEnum_FieldNumber_EnumvalueArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBEnum__storage_, enumvalueArray), @@ -531,7 +542,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "optionsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBOption), + .dataTypeSpecific.clazz = GPBObjCClass(GPBOption), .number = GPBEnum_FieldNumber_OptionsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBEnum__storage_, optionsArray), @@ -540,7 +551,7 @@ + (GPBDescriptor *)descriptor { }, { .name = "sourceContext", - .dataTypeSpecific.className = GPBStringifySymbol(GPBSourceContext), + .dataTypeSpecific.clazz = GPBObjCClass(GPBSourceContext), .number = GPBEnum_FieldNumber_SourceContext, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBEnum__storage_, sourceContext), @@ -553,7 +564,7 @@ + (GPBDescriptor *)descriptor { .number = GPBEnum_FieldNumber_Syntax, .hasIndex = 2, .offset = (uint32_t)offsetof(GPBEnum__storage_, syntax), - .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeEnum, }, }; @@ -564,7 +575,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBEnum__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -578,13 +589,13 @@ + (GPBDescriptor *)descriptor { int32_t GPBEnum_Syntax_RawValue(GPBEnum *message) { GPBDescriptor *descriptor = [GPBEnum descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBEnum_FieldNumber_Syntax]; - return GPBGetMessageInt32Field(message, field); + return GPBGetMessageRawEnumField(message, field); } void SetGPBEnum_Syntax_RawValue(GPBEnum *message, int32_t value) { GPBDescriptor *descriptor = [GPBEnum descriptor]; GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBEnum_FieldNumber_Syntax]; - GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax); + GPBSetMessageRawEnumField(message, field, value); } #pragma mark - GPBEnumValue @@ -610,25 +621,25 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBEnumValue_FieldNumber_Name, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBEnumValue__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "number", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBEnumValue_FieldNumber_Number, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBEnumValue__storage_, number), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt32, }, { .name = "optionsArray", - .dataTypeSpecific.className = GPBStringifySymbol(GPBOption), + .dataTypeSpecific.clazz = GPBObjCClass(GPBOption), .number = GPBEnumValue_FieldNumber_OptionsArray, .hasIndex = GPBNoHasBit, .offset = (uint32_t)offsetof(GPBEnumValue__storage_, optionsArray), @@ -643,7 +654,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBEnumValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -675,16 +686,16 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "name", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBOption_FieldNumber_Name, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBOption__storage_, name), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, { .name = "value", - .dataTypeSpecific.className = GPBStringifySymbol(GPBAny), + .dataTypeSpecific.clazz = GPBObjCClass(GPBAny), .number = GPBOption_FieldNumber_Value, .hasIndex = 1, .offset = (uint32_t)offsetof(GPBOption__storage_, value), @@ -699,7 +710,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBOption__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/GPBUtilities.h b/Pods/Protobuf/objectivec/GPBUtilities.h index 5464dfb..75759b2 100644 --- a/Pods/Protobuf/objectivec/GPBUtilities.h +++ b/Pods/Protobuf/objectivec/GPBUtilities.h @@ -34,6 +34,8 @@ #import "GPBMessage.h" #import "GPBRuntimeTypes.h" +@class GPBOneofDescriptor; + CF_EXTERN_C_BEGIN NS_ASSUME_NONNULL_BEGIN @@ -92,8 +94,17 @@ BOOL GPBMessageHasFieldSet(GPBMessage *self, GPBFieldDescriptor *field); **/ void GPBClearMessageField(GPBMessage *self, GPBFieldDescriptor *field); +/** + * Clears the given oneof field for the given message. + * + * @param self The message for which to clear the field. + * @param oneof The oneof to clear. + **/ +void GPBClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof); + //%PDDM-EXPAND GPB_ACCESSORS() // This block of code is generated, do not edit it directly. +// clang-format off // @@ -384,6 +395,7 @@ void GPBSetMessageMapField(GPBMessage *self, GPBFieldDescriptor *field, id dictionary); +// clang-format on //%PDDM-EXPAND-END GPB_ACCESSORS() /** diff --git a/Pods/Protobuf/objectivec/GPBUtilities.m b/Pods/Protobuf/objectivec/GPBUtilities.m index 0d3a080..ee79d00 100644 --- a/Pods/Protobuf/objectivec/GPBUtilities.m +++ b/Pods/Protobuf/objectivec/GPBUtilities.m @@ -62,6 +62,12 @@ static BOOL DataTypesEquivalent(GPBDataType type1, // Marked unused because currently only called from asserts/debug. static NSString *TypeToString(GPBDataType dataType) __attribute__ ((unused)); +// Helper for clearing oneofs. +static void GPBMaybeClearOneofPrivate(GPBMessage *self, + GPBOneofDescriptor *oneof, + int32_t oneofHasIndex, + uint32_t fieldNumberNotToClear); + NSData *GPBEmptyNSData(void) { static dispatch_once_t onceToken; static NSData *defaultNSData = nil; @@ -267,17 +273,28 @@ void GPBClearMessageField(GPBMessage *self, GPBFieldDescriptor *field) { return; } + GPBMessageFieldDescription *fieldDesc = field->description_; if (GPBFieldStoresObject(field)) { // Object types are handled slightly differently, they need to be released. uint8_t *storage = (uint8_t *)self->messageStorage_; - id *typePtr = (id *)&storage[field->description_->offset]; + id *typePtr = (id *)&storage[fieldDesc->offset]; [*typePtr release]; *typePtr = nil; } else { // POD types just need to clear the has bit as the Get* method will // fetch the default when needed. } - GPBSetHasIvarField(self, field, NO); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, NO); +} + +void GPBClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof) { + #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] oneofWithName:oneof.name] == oneof, + @"OneofDescriptor %@ doesn't appear to be for %@ messages.", + oneof.name, [self class]); + #endif + GPBFieldDescriptor *firstField = oneof->fields_[0]; + GPBMaybeClearOneofPrivate(self, oneof, firstField->description_->hasIndex, 0); } BOOL GPBGetHasIvar(GPBMessage *self, int32_t idx, uint32_t fieldNumber) { @@ -324,8 +341,10 @@ void GPBSetHasIvar(GPBMessage *self, int32_t idx, uint32_t fieldNumber, } } -void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, - int32_t oneofHasIndex, uint32_t fieldNumberNotToClear) { +static void GPBMaybeClearOneofPrivate(GPBMessage *self, + GPBOneofDescriptor *oneof, + int32_t oneofHasIndex, + uint32_t fieldNumberNotToClear) { uint32_t fieldNumberSet = GPBGetHasOneof(self, oneofHasIndex); if ((fieldNumberSet == fieldNumberNotToClear) || (fieldNumberSet == 0)) { // Do nothing/nothing set in the oneof. @@ -356,6 +375,9 @@ void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, //%TYPE GPBGetMessage##NAME##Field(GPBMessage *self, //% TYPE$S NAME$S GPBFieldDescriptor *field) { //%#if defined(DEBUG) && DEBUG +//% NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, +//% @"FieldDescriptor %@ doesn't appear to be for %@ messages.", +//% field.name, [self class]); //% NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), //% GPBDataType##NAME), //% @"Attempting to get value of TYPE from field %@ " @@ -377,15 +399,10 @@ void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, //% NAME$S GPBFieldDescriptor *field, //% NAME$S TYPE value) { //% if (self == nil || field == nil) return; -//% GPBFileSyntax syntax = [self descriptor].file.syntax; -//% GPBSet##NAME##IvarWithFieldInternal(self, field, value, syntax); -//%} -//% -//%void GPBSet##NAME##IvarWithFieldInternal(GPBMessage *self, -//% NAME$S GPBFieldDescriptor *field, -//% NAME$S TYPE value, -//% NAME$S GPBFileSyntax syntax) { //%#if defined(DEBUG) && DEBUG +//% NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, +//% @"FieldDescriptor %@ doesn't appear to be for %@ messages.", +//% field.name, [self class]); //% NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), //% GPBDataType##NAME), //% @"Attempting to set field %@ of %@ which is of type %@ with " @@ -393,10 +410,16 @@ void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, //% [self class], field.name, //% TypeToString(GPBGetFieldDataType(field))); //%#endif +//% GPBSet##NAME##IvarWithFieldPrivate(self, field, value); +//%} +//% +//%void GPBSet##NAME##IvarWithFieldPrivate(GPBMessage *self, +//% NAME$S GPBFieldDescriptor *field, +//% NAME$S TYPE value) { //% GPBOneofDescriptor *oneof = field->containingOneof_; +//% GPBMessageFieldDescription *fieldDesc = field->description_; //% if (oneof) { -//% GPBMessageFieldDescription *fieldDesc = field->description_; -//% GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); +//% GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); //% } //%#if defined(DEBUG) && DEBUG //% NSCAssert(self->messageStorage_ != NULL, @@ -407,14 +430,13 @@ void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, //% if (self->messageStorage_ == NULL) return; //%#endif //% uint8_t *storage = (uint8_t *)self->messageStorage_; -//% TYPE *typePtr = (TYPE *)&storage[field->description_->offset]; +//% TYPE *typePtr = (TYPE *)&storage[fieldDesc->offset]; //% *typePtr = value; -//% // proto2: any value counts as having been set; proto3, it -//% // has to be a non zero value or be in a oneof. -//% BOOL hasValue = ((syntax == GPBFileSyntaxProto2) -//% || (value != (TYPE)0) -//% || (field->containingOneof_ != NULL)); -//% GPBSetHasIvarField(self, field, hasValue); +//% // If the value is zero, then we only count the field as "set" if the field +//% // shouldn't auto clear on zero. +//% BOOL hasValue = ((value != (TYPE)0) +//% || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); +//% GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); //% GPBBecomeVisibleToAutocreator(self); //%} //% @@ -504,43 +526,37 @@ void GPBClearAutocreatedMessageIvarWithField(GPBMessage *self, [oldValue release]; } -// This exists only for briging some aliased types, nothing else should use it. +// This exists only for bridging some aliased types, nothing else should use it. static void GPBSetObjectIvarWithField(GPBMessage *self, GPBFieldDescriptor *field, id value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetRetainedObjectIvarWithFieldInternal(self, field, [value retain], - syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, [value retain]); } static void GPBSetCopyObjectIvarWithField(GPBMessage *self, GPBFieldDescriptor *field, id value); // GPBSetCopyObjectIvarWithField is blocked from the analyzer because it flags -// a leak for the -copy even though GPBSetRetainedObjectIvarWithFieldInternal +// a leak for the -copy even though GPBSetRetainedObjectIvarWithFieldPrivate // is marked as consuming the value. Note: For some reason this doesn't happen // with the -retain in GPBSetObjectIvarWithField. #if !defined(__clang_analyzer__) -// This exists only for briging some aliased types, nothing else should use it. +// This exists only for bridging some aliased types, nothing else should use it. static void GPBSetCopyObjectIvarWithField(GPBMessage *self, GPBFieldDescriptor *field, id value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetRetainedObjectIvarWithFieldInternal(self, field, [value copy], - syntax); + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, [value copy]); } #endif // !defined(__clang_analyzer__) -void GPBSetObjectIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, id value, - GPBFileSyntax syntax) { - GPBSetRetainedObjectIvarWithFieldInternal(self, field, [value retain], - syntax); +void GPBSetObjectIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, id value) { + GPBSetRetainedObjectIvarWithFieldPrivate(self, field, [value retain]); } -void GPBSetRetainedObjectIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - id value, GPBFileSyntax syntax) { +void GPBSetRetainedObjectIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + id value) { NSCAssert(self->messageStorage_ != NULL, @"%@: All messages should have storage (from init)", [self class]); @@ -579,39 +595,30 @@ void GPBSetRetainedObjectIvarWithFieldInternal(GPBMessage *self, // valueData/valueMessage. } #endif // DEBUG + GPBMessageFieldDescription *fieldDesc = field->description_; if (!isMapOrArray) { // Non repeated/map can be in an oneof, clear any existing value from the // oneof. GPBOneofDescriptor *oneof = field->containingOneof_; if (oneof) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } // Clear "has" if they are being set to nil. BOOL setHasValue = (value != nil); - // Under proto3, Bytes & String fields get cleared by resetting them to - // their default (empty) values, so if they are set to something of length - // zero, they are being cleared. - if ((syntax == GPBFileSyntaxProto3) && !fieldIsMessage && + // If the field should clear on a "zero" value, then check if the string/data + // was zero length, and clear instead. + if (((fieldDesc->flags & GPBFieldClearHasIvarOnZero) != 0) && ([value length] == 0)) { - // Except, if the field was in a oneof, then it still gets recorded as - // having been set so the state of the oneof can be serialized back out. - if (!oneof) { - setHasValue = NO; - } - if (setHasValue) { - NSCAssert(value != nil, @"Should never be setting has for nil"); - } else { - // The value passed in was retained, it must be released since we - // aren't saving anything in the field. - [value release]; - value = nil; - } + setHasValue = NO; + // The value passed in was retained, it must be released since we + // aren't saving anything in the field. + [value release]; + value = nil; } - GPBSetHasIvarField(self, field, setHasValue); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, setHasValue); } uint8_t *storage = (uint8_t *)self->messageStorage_; - id *typePtr = (id *)&storage[field->description_->offset]; + id *typePtr = (id *)&storage[fieldDesc->offset]; id oldValue = *typePtr; @@ -678,23 +685,22 @@ id GPBGetObjectIvarWithFieldNoAutocreate(GPBMessage *self, // Only exists for public api, no core code should use this. int32_t GPBGetMessageEnumField(GPBMessage *self, GPBFieldDescriptor *field) { - GPBFileSyntax syntax = [self descriptor].file.syntax; - return GPBGetEnumIvarWithFieldInternal(self, field, syntax); -} + #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); + NSCAssert(GPBGetFieldDataType(field) == GPBDataTypeEnum, + @"Attempting to get value of type Enum from field %@ " + @"of %@ which is of type %@.", + [self class], field.name, + TypeToString(GPBGetFieldDataType(field))); + #endif -int32_t GPBGetEnumIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - GPBFileSyntax syntax) { -#if defined(DEBUG) && DEBUG - NSCAssert(GPBGetFieldDataType(field) == GPBDataTypeEnum, - @"Attempting to get value of type Enum from field %@ " - @"of %@ which is of type %@.", - [self class], field.name, - TypeToString(GPBGetFieldDataType(field))); -#endif int32_t result = GPBGetMessageInt32Field(self, field); // If this is presevering unknown enums, make sure the value is valid before // returning it. + + GPBFileSyntax syntax = [self descriptor].file.syntax; if (GPBHasPreservingUnknownEnumSemantics(syntax) && ![field isValidEnumValue:result]) { result = kGPBUnrecognizedEnumeratorValue; @@ -705,27 +711,28 @@ int32_t GPBGetEnumIvarWithFieldInternal(GPBMessage *self, // Only exists for public api, no core code should use this. void GPBSetMessageEnumField(GPBMessage *self, GPBFieldDescriptor *field, int32_t value) { - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetInt32IvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetEnumIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, int32_t value, - GPBFileSyntax syntax) { -#if defined(DEBUG) && DEBUG - NSCAssert(GPBGetFieldDataType(field) == GPBDataTypeEnum, - @"Attempting to set field %@ of %@ which is of type %@ with " - @"value of type Enum.", - [self class], field.name, - TypeToString(GPBGetFieldDataType(field))); -#endif + #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); + NSCAssert(GPBGetFieldDataType(field) == GPBDataTypeEnum, + @"Attempting to set field %@ of %@ which is of type %@ with " + @"value of type Enum.", + [self class], field.name, + TypeToString(GPBGetFieldDataType(field))); + #endif + GPBSetEnumIvarWithFieldPrivate(self, field, value); +} + +void GPBSetEnumIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, int32_t value) { // Don't allow in unknown values. Proto3 can use the Raw method. if (![field isValidEnumValue:value]) { [NSException raise:NSInvalidArgumentException format:@"%@.%@: Attempt to set an unknown enum value (%d)", [self class], field.name, value]; } - GPBSetInt32IvarWithFieldInternal(self, field, value, syntax); + GPBSetInt32IvarWithFieldPrivate(self, field, value); } // Only exists for public api, no core code should use this. @@ -738,13 +745,15 @@ int32_t GPBGetMessageRawEnumField(GPBMessage *self, // Only exists for public api, no core code should use this. void GPBSetMessageRawEnumField(GPBMessage *self, GPBFieldDescriptor *field, int32_t value) { - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetInt32IvarWithFieldInternal(self, field, value, syntax); + GPBSetInt32IvarWithFieldPrivate(self, field, value); } BOOL GPBGetMessageBoolField(GPBMessage *self, GPBFieldDescriptor *field) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeBool), @"Attempting to get value of type bool from field %@ " @"of %@ which is of type %@.", @@ -768,25 +777,26 @@ void GPBSetMessageBoolField(GPBMessage *self, GPBFieldDescriptor *field, BOOL value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetBoolIvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetBoolIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - BOOL value, - GPBFileSyntax syntax) { -#if defined(DEBUG) && DEBUG - NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeBool), - @"Attempting to set field %@ of %@ which is of type %@ with " - @"value of type bool.", - [self class], field.name, - TypeToString(GPBGetFieldDataType(field))); -#endif + #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); + NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeBool), + @"Attempting to set field %@ of %@ which is of type %@ with " + @"value of type bool.", + [self class], field.name, + TypeToString(GPBGetFieldDataType(field))); + #endif + GPBSetBoolIvarWithFieldPrivate(self, field, value); +} + +void GPBSetBoolIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + BOOL value) { GPBMessageFieldDescription *fieldDesc = field->description_; GPBOneofDescriptor *oneof = field->containingOneof_; if (oneof) { - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } // Bools are stored in the has bits to avoid needing explicit space in the @@ -795,21 +805,24 @@ void GPBSetBoolIvarWithFieldInternal(GPBMessage *self, // the offset is never negative) GPBSetHasIvar(self, (int32_t)(fieldDesc->offset), fieldDesc->number, value); - // proto2: any value counts as having been set; proto3, it - // has to be a non zero value or be in a oneof. - BOOL hasValue = ((syntax == GPBFileSyntaxProto2) - || (value != (BOOL)0) - || (field->containingOneof_ != NULL)); - GPBSetHasIvarField(self, field, hasValue); + // If the value is zero, then we only count the field as "set" if the field + // shouldn't auto clear on zero. + BOOL hasValue = ((value != (BOOL)0) + || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); GPBBecomeVisibleToAutocreator(self); } //%PDDM-EXPAND IVAR_POD_ACCESSORS_DEFN(Int32, int32_t) // This block of code is generated, do not edit it directly. +// clang-format off int32_t GPBGetMessageInt32Field(GPBMessage *self, GPBFieldDescriptor *field) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeInt32), @"Attempting to get value of int32_t from field %@ " @@ -831,15 +844,10 @@ void GPBSetMessageInt32Field(GPBMessage *self, GPBFieldDescriptor *field, int32_t value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetInt32IvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetInt32IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - int32_t value, - GPBFileSyntax syntax) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeInt32), @"Attempting to set field %@ of %@ which is of type %@ with " @@ -847,10 +855,16 @@ void GPBSetInt32IvarWithFieldInternal(GPBMessage *self, [self class], field.name, TypeToString(GPBGetFieldDataType(field))); #endif + GPBSetInt32IvarWithFieldPrivate(self, field, value); +} + +void GPBSetInt32IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + int32_t value) { GPBOneofDescriptor *oneof = field->containingOneof_; + GPBMessageFieldDescription *fieldDesc = field->description_; if (oneof) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } #if defined(DEBUG) && DEBUG NSCAssert(self->messageStorage_ != NULL, @@ -861,23 +875,27 @@ void GPBSetInt32IvarWithFieldInternal(GPBMessage *self, if (self->messageStorage_ == NULL) return; #endif uint8_t *storage = (uint8_t *)self->messageStorage_; - int32_t *typePtr = (int32_t *)&storage[field->description_->offset]; + int32_t *typePtr = (int32_t *)&storage[fieldDesc->offset]; *typePtr = value; - // proto2: any value counts as having been set; proto3, it - // has to be a non zero value or be in a oneof. - BOOL hasValue = ((syntax == GPBFileSyntaxProto2) - || (value != (int32_t)0) - || (field->containingOneof_ != NULL)); - GPBSetHasIvarField(self, field, hasValue); + // If the value is zero, then we only count the field as "set" if the field + // shouldn't auto clear on zero. + BOOL hasValue = ((value != (int32_t)0) + || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); GPBBecomeVisibleToAutocreator(self); } +// clang-format on //%PDDM-EXPAND IVAR_POD_ACCESSORS_DEFN(UInt32, uint32_t) // This block of code is generated, do not edit it directly. +// clang-format off uint32_t GPBGetMessageUInt32Field(GPBMessage *self, GPBFieldDescriptor *field) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeUInt32), @"Attempting to get value of uint32_t from field %@ " @@ -899,15 +917,10 @@ void GPBSetMessageUInt32Field(GPBMessage *self, GPBFieldDescriptor *field, uint32_t value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetUInt32IvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetUInt32IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - uint32_t value, - GPBFileSyntax syntax) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeUInt32), @"Attempting to set field %@ of %@ which is of type %@ with " @@ -915,10 +928,16 @@ void GPBSetUInt32IvarWithFieldInternal(GPBMessage *self, [self class], field.name, TypeToString(GPBGetFieldDataType(field))); #endif + GPBSetUInt32IvarWithFieldPrivate(self, field, value); +} + +void GPBSetUInt32IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + uint32_t value) { GPBOneofDescriptor *oneof = field->containingOneof_; + GPBMessageFieldDescription *fieldDesc = field->description_; if (oneof) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } #if defined(DEBUG) && DEBUG NSCAssert(self->messageStorage_ != NULL, @@ -929,23 +948,27 @@ void GPBSetUInt32IvarWithFieldInternal(GPBMessage *self, if (self->messageStorage_ == NULL) return; #endif uint8_t *storage = (uint8_t *)self->messageStorage_; - uint32_t *typePtr = (uint32_t *)&storage[field->description_->offset]; + uint32_t *typePtr = (uint32_t *)&storage[fieldDesc->offset]; *typePtr = value; - // proto2: any value counts as having been set; proto3, it - // has to be a non zero value or be in a oneof. - BOOL hasValue = ((syntax == GPBFileSyntaxProto2) - || (value != (uint32_t)0) - || (field->containingOneof_ != NULL)); - GPBSetHasIvarField(self, field, hasValue); + // If the value is zero, then we only count the field as "set" if the field + // shouldn't auto clear on zero. + BOOL hasValue = ((value != (uint32_t)0) + || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); GPBBecomeVisibleToAutocreator(self); } +// clang-format on //%PDDM-EXPAND IVAR_POD_ACCESSORS_DEFN(Int64, int64_t) // This block of code is generated, do not edit it directly. +// clang-format off int64_t GPBGetMessageInt64Field(GPBMessage *self, GPBFieldDescriptor *field) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeInt64), @"Attempting to get value of int64_t from field %@ " @@ -967,15 +990,10 @@ void GPBSetMessageInt64Field(GPBMessage *self, GPBFieldDescriptor *field, int64_t value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetInt64IvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetInt64IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - int64_t value, - GPBFileSyntax syntax) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeInt64), @"Attempting to set field %@ of %@ which is of type %@ with " @@ -983,10 +1001,16 @@ void GPBSetInt64IvarWithFieldInternal(GPBMessage *self, [self class], field.name, TypeToString(GPBGetFieldDataType(field))); #endif + GPBSetInt64IvarWithFieldPrivate(self, field, value); +} + +void GPBSetInt64IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + int64_t value) { GPBOneofDescriptor *oneof = field->containingOneof_; + GPBMessageFieldDescription *fieldDesc = field->description_; if (oneof) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } #if defined(DEBUG) && DEBUG NSCAssert(self->messageStorage_ != NULL, @@ -997,23 +1021,27 @@ void GPBSetInt64IvarWithFieldInternal(GPBMessage *self, if (self->messageStorage_ == NULL) return; #endif uint8_t *storage = (uint8_t *)self->messageStorage_; - int64_t *typePtr = (int64_t *)&storage[field->description_->offset]; + int64_t *typePtr = (int64_t *)&storage[fieldDesc->offset]; *typePtr = value; - // proto2: any value counts as having been set; proto3, it - // has to be a non zero value or be in a oneof. - BOOL hasValue = ((syntax == GPBFileSyntaxProto2) - || (value != (int64_t)0) - || (field->containingOneof_ != NULL)); - GPBSetHasIvarField(self, field, hasValue); + // If the value is zero, then we only count the field as "set" if the field + // shouldn't auto clear on zero. + BOOL hasValue = ((value != (int64_t)0) + || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); GPBBecomeVisibleToAutocreator(self); } +// clang-format on //%PDDM-EXPAND IVAR_POD_ACCESSORS_DEFN(UInt64, uint64_t) // This block of code is generated, do not edit it directly. +// clang-format off uint64_t GPBGetMessageUInt64Field(GPBMessage *self, GPBFieldDescriptor *field) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeUInt64), @"Attempting to get value of uint64_t from field %@ " @@ -1035,15 +1063,10 @@ void GPBSetMessageUInt64Field(GPBMessage *self, GPBFieldDescriptor *field, uint64_t value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetUInt64IvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetUInt64IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - uint64_t value, - GPBFileSyntax syntax) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeUInt64), @"Attempting to set field %@ of %@ which is of type %@ with " @@ -1051,10 +1074,16 @@ void GPBSetUInt64IvarWithFieldInternal(GPBMessage *self, [self class], field.name, TypeToString(GPBGetFieldDataType(field))); #endif + GPBSetUInt64IvarWithFieldPrivate(self, field, value); +} + +void GPBSetUInt64IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + uint64_t value) { GPBOneofDescriptor *oneof = field->containingOneof_; + GPBMessageFieldDescription *fieldDesc = field->description_; if (oneof) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } #if defined(DEBUG) && DEBUG NSCAssert(self->messageStorage_ != NULL, @@ -1065,23 +1094,27 @@ void GPBSetUInt64IvarWithFieldInternal(GPBMessage *self, if (self->messageStorage_ == NULL) return; #endif uint8_t *storage = (uint8_t *)self->messageStorage_; - uint64_t *typePtr = (uint64_t *)&storage[field->description_->offset]; + uint64_t *typePtr = (uint64_t *)&storage[fieldDesc->offset]; *typePtr = value; - // proto2: any value counts as having been set; proto3, it - // has to be a non zero value or be in a oneof. - BOOL hasValue = ((syntax == GPBFileSyntaxProto2) - || (value != (uint64_t)0) - || (field->containingOneof_ != NULL)); - GPBSetHasIvarField(self, field, hasValue); + // If the value is zero, then we only count the field as "set" if the field + // shouldn't auto clear on zero. + BOOL hasValue = ((value != (uint64_t)0) + || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); GPBBecomeVisibleToAutocreator(self); } +// clang-format on //%PDDM-EXPAND IVAR_POD_ACCESSORS_DEFN(Float, float) // This block of code is generated, do not edit it directly. +// clang-format off float GPBGetMessageFloatField(GPBMessage *self, GPBFieldDescriptor *field) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeFloat), @"Attempting to get value of float from field %@ " @@ -1103,15 +1136,10 @@ void GPBSetMessageFloatField(GPBMessage *self, GPBFieldDescriptor *field, float value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetFloatIvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetFloatIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - float value, - GPBFileSyntax syntax) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeFloat), @"Attempting to set field %@ of %@ which is of type %@ with " @@ -1119,10 +1147,16 @@ void GPBSetFloatIvarWithFieldInternal(GPBMessage *self, [self class], field.name, TypeToString(GPBGetFieldDataType(field))); #endif + GPBSetFloatIvarWithFieldPrivate(self, field, value); +} + +void GPBSetFloatIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + float value) { GPBOneofDescriptor *oneof = field->containingOneof_; + GPBMessageFieldDescription *fieldDesc = field->description_; if (oneof) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } #if defined(DEBUG) && DEBUG NSCAssert(self->messageStorage_ != NULL, @@ -1133,23 +1167,27 @@ void GPBSetFloatIvarWithFieldInternal(GPBMessage *self, if (self->messageStorage_ == NULL) return; #endif uint8_t *storage = (uint8_t *)self->messageStorage_; - float *typePtr = (float *)&storage[field->description_->offset]; + float *typePtr = (float *)&storage[fieldDesc->offset]; *typePtr = value; - // proto2: any value counts as having been set; proto3, it - // has to be a non zero value or be in a oneof. - BOOL hasValue = ((syntax == GPBFileSyntaxProto2) - || (value != (float)0) - || (field->containingOneof_ != NULL)); - GPBSetHasIvarField(self, field, hasValue); + // If the value is zero, then we only count the field as "set" if the field + // shouldn't auto clear on zero. + BOOL hasValue = ((value != (float)0) + || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); GPBBecomeVisibleToAutocreator(self); } +// clang-format on //%PDDM-EXPAND IVAR_POD_ACCESSORS_DEFN(Double, double) // This block of code is generated, do not edit it directly. +// clang-format off double GPBGetMessageDoubleField(GPBMessage *self, GPBFieldDescriptor *field) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeDouble), @"Attempting to get value of double from field %@ " @@ -1171,15 +1209,10 @@ void GPBSetMessageDoubleField(GPBMessage *self, GPBFieldDescriptor *field, double value) { if (self == nil || field == nil) return; - GPBFileSyntax syntax = [self descriptor].file.syntax; - GPBSetDoubleIvarWithFieldInternal(self, field, value, syntax); -} - -void GPBSetDoubleIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - double value, - GPBFileSyntax syntax) { #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] fieldWithNumber:field.number] == field, + @"FieldDescriptor %@ doesn't appear to be for %@ messages.", + field.name, [self class]); NSCAssert(DataTypesEquivalent(GPBGetFieldDataType(field), GPBDataTypeDouble), @"Attempting to set field %@ of %@ which is of type %@ with " @@ -1187,10 +1220,16 @@ void GPBSetDoubleIvarWithFieldInternal(GPBMessage *self, [self class], field.name, TypeToString(GPBGetFieldDataType(field))); #endif + GPBSetDoubleIvarWithFieldPrivate(self, field, value); +} + +void GPBSetDoubleIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + double value) { GPBOneofDescriptor *oneof = field->containingOneof_; + GPBMessageFieldDescription *fieldDesc = field->description_; if (oneof) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBMaybeClearOneof(self, oneof, fieldDesc->hasIndex, fieldDesc->number); + GPBMaybeClearOneofPrivate(self, oneof, fieldDesc->hasIndex, fieldDesc->number); } #if defined(DEBUG) && DEBUG NSCAssert(self->messageStorage_ != NULL, @@ -1201,23 +1240,24 @@ void GPBSetDoubleIvarWithFieldInternal(GPBMessage *self, if (self->messageStorage_ == NULL) return; #endif uint8_t *storage = (uint8_t *)self->messageStorage_; - double *typePtr = (double *)&storage[field->description_->offset]; + double *typePtr = (double *)&storage[fieldDesc->offset]; *typePtr = value; - // proto2: any value counts as having been set; proto3, it - // has to be a non zero value or be in a oneof. - BOOL hasValue = ((syntax == GPBFileSyntaxProto2) - || (value != (double)0) - || (field->containingOneof_ != NULL)); - GPBSetHasIvarField(self, field, hasValue); + // If the value is zero, then we only count the field as "set" if the field + // shouldn't auto clear on zero. + BOOL hasValue = ((value != (double)0) + || ((fieldDesc->flags & GPBFieldClearHasIvarOnZero) == 0)); + GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, hasValue); GPBBecomeVisibleToAutocreator(self); } +// clang-format on //%PDDM-EXPAND-END (6 expansions) // Aliases are function calls that are virtually the same. //%PDDM-EXPAND IVAR_ALIAS_DEFN_COPY_OBJECT(String, NSString) // This block of code is generated, do not edit it directly. +// clang-format off // Only exists for public api, no core code should use this. NSString *GPBGetMessageStringField(GPBMessage *self, @@ -1248,8 +1288,10 @@ void GPBSetMessageStringField(GPBMessage *self, GPBSetCopyObjectIvarWithField(self, field, (id)value); } +// clang-format on //%PDDM-EXPAND IVAR_ALIAS_DEFN_COPY_OBJECT(Bytes, NSData) // This block of code is generated, do not edit it directly. +// clang-format off // Only exists for public api, no core code should use this. NSData *GPBGetMessageBytesField(GPBMessage *self, @@ -1280,8 +1322,10 @@ void GPBSetMessageBytesField(GPBMessage *self, GPBSetCopyObjectIvarWithField(self, field, (id)value); } +// clang-format on //%PDDM-EXPAND IVAR_ALIAS_DEFN_OBJECT(Message, GPBMessage) // This block of code is generated, do not edit it directly. +// clang-format off // Only exists for public api, no core code should use this. GPBMessage *GPBGetMessageMessageField(GPBMessage *self, @@ -1312,8 +1356,10 @@ void GPBSetMessageMessageField(GPBMessage *self, GPBSetObjectIvarWithField(self, field, (id)value); } +// clang-format on //%PDDM-EXPAND IVAR_ALIAS_DEFN_OBJECT(Group, GPBMessage) // This block of code is generated, do not edit it directly. +// clang-format off // Only exists for public api, no core code should use this. GPBMessage *GPBGetMessageGroupField(GPBMessage *self, @@ -1344,6 +1390,7 @@ void GPBSetMessageGroupField(GPBMessage *self, GPBSetObjectIvarWithField(self, field, (id)value); } +// clang-format on //%PDDM-EXPAND-END (4 expansions) // GPBGetMessageRepeatedField is defined in GPBMessage.m @@ -2192,8 +2239,36 @@ static int32_t ReadRawVarint32FromData(const uint8_t **data) { return result; } +#pragma mark Legacy methods old generated code calls + +// Shim from the older generated code into the runtime. +void GPBSetInt32IvarWithFieldInternal(GPBMessage *self, + GPBFieldDescriptor *field, + int32_t value, + GPBFileSyntax syntax) { +#pragma unused(syntax) + GPBSetMessageInt32Field(self, field, value); +} + +void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, + int32_t oneofHasIndex, uint32_t fieldNumberNotToClear) { +#pragma unused(fieldNumberNotToClear) + #if defined(DEBUG) && DEBUG + NSCAssert([[self descriptor] oneofWithName:oneof.name] == oneof, + @"OneofDescriptor %@ doesn't appear to be for %@ messages.", + oneof.name, [self class]); + GPBFieldDescriptor *firstField = oneof->fields_[0]; + NSCAssert(firstField->description_->hasIndex == oneofHasIndex, + @"Internal error, oneofHasIndex (%d) doesn't match (%d).", + firstField->description_->hasIndex, oneofHasIndex); + #endif + GPBMaybeClearOneofPrivate(self, oneof, oneofHasIndex, 0); +} + #pragma clang diagnostic pop +#pragma mark Misc Helpers + BOOL GPBClassHasSel(Class aClass, SEL sel) { // NOTE: We have to use class_copyMethodList, all other runtime method // lookups actually also resolve the method implementation and this diff --git a/Pods/Protobuf/objectivec/GPBUtilities_PackagePrivate.h b/Pods/Protobuf/objectivec/GPBUtilities_PackagePrivate.h index 336a745..9c29c39 100644 --- a/Pods/Protobuf/objectivec/GPBUtilities_PackagePrivate.h +++ b/Pods/Protobuf/objectivec/GPBUtilities_PackagePrivate.h @@ -35,14 +35,23 @@ #import "GPBDescriptor_PackagePrivate.h" // Macros for stringifying library symbols. These are used in the generated -// PB descriptor classes wherever a library symbol name is represented as a -// string. See README.google for more information. +// GPB descriptor classes wherever a library symbol name is represented as a +// string. #define GPBStringify(S) #S #define GPBStringifySymbol(S) GPBStringify(S) #define GPBNSStringify(S) @#S #define GPBNSStringifySymbol(S) GPBNSStringify(S) +// Macros for generating a Class from a class name. These are used in +// the generated GPB descriptor classes wherever an Objective C class +// reference is needed for a generated class. +#define GPBObjCClassSymbol(name) OBJC_CLASS_$_##name +#define GPBObjCClass(name) \ + ((__bridge Class)&(GPBObjCClassSymbol(name))) +#define GPBObjCClassDeclaration(name) \ + extern const GPBObjcClass_t GPBObjCClassSymbol(name) + // Constant to internally mark when there is no has bit. #define GPBNoHasBit INT32_MAX @@ -197,94 +206,83 @@ GPBGetHasIvarField(GPBMessage *self, GPBFieldDescriptor *field) { GPBMessageFieldDescription *fieldDesc = field->description_; return GPBGetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number); } -GPB_INLINE void GPBSetHasIvarField(GPBMessage *self, GPBFieldDescriptor *field, - BOOL value) { - GPBMessageFieldDescription *fieldDesc = field->description_; - GPBSetHasIvar(self, fieldDesc->hasIndex, fieldDesc->number, value); -} - -void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, - int32_t oneofHasIndex, uint32_t fieldNumberNotToClear); #pragma clang diagnostic pop //%PDDM-DEFINE GPB_IVAR_SET_DECL(NAME, TYPE) -//%void GPBSet##NAME##IvarWithFieldInternal(GPBMessage *self, -//% NAME$S GPBFieldDescriptor *field, -//% NAME$S TYPE value, -//% NAME$S GPBFileSyntax syntax); +//%void GPBSet##NAME##IvarWithFieldPrivate(GPBMessage *self, +//% NAME$S GPBFieldDescriptor *field, +//% NAME$S TYPE value); //%PDDM-EXPAND GPB_IVAR_SET_DECL(Bool, BOOL) // This block of code is generated, do not edit it directly. +// clang-format off -void GPBSetBoolIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - BOOL value, - GPBFileSyntax syntax); +void GPBSetBoolIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + BOOL value); +// clang-format on //%PDDM-EXPAND GPB_IVAR_SET_DECL(Int32, int32_t) // This block of code is generated, do not edit it directly. +// clang-format off -void GPBSetInt32IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - int32_t value, - GPBFileSyntax syntax); +void GPBSetInt32IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + int32_t value); +// clang-format on //%PDDM-EXPAND GPB_IVAR_SET_DECL(UInt32, uint32_t) // This block of code is generated, do not edit it directly. +// clang-format off -void GPBSetUInt32IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - uint32_t value, - GPBFileSyntax syntax); +void GPBSetUInt32IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + uint32_t value); +// clang-format on //%PDDM-EXPAND GPB_IVAR_SET_DECL(Int64, int64_t) // This block of code is generated, do not edit it directly. +// clang-format off -void GPBSetInt64IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - int64_t value, - GPBFileSyntax syntax); +void GPBSetInt64IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + int64_t value); +// clang-format on //%PDDM-EXPAND GPB_IVAR_SET_DECL(UInt64, uint64_t) // This block of code is generated, do not edit it directly. +// clang-format off -void GPBSetUInt64IvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - uint64_t value, - GPBFileSyntax syntax); +void GPBSetUInt64IvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + uint64_t value); +// clang-format on //%PDDM-EXPAND GPB_IVAR_SET_DECL(Float, float) // This block of code is generated, do not edit it directly. +// clang-format off -void GPBSetFloatIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - float value, - GPBFileSyntax syntax); +void GPBSetFloatIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + float value); +// clang-format on //%PDDM-EXPAND GPB_IVAR_SET_DECL(Double, double) // This block of code is generated, do not edit it directly. +// clang-format off -void GPBSetDoubleIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - double value, - GPBFileSyntax syntax); -//%PDDM-EXPAND GPB_IVAR_SET_DECL(Enum, int32_t) -// This block of code is generated, do not edit it directly. - -void GPBSetEnumIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - int32_t value, - GPBFileSyntax syntax); -//%PDDM-EXPAND-END (8 expansions) +void GPBSetDoubleIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + double value); +// clang-format on +//%PDDM-EXPAND-END (7 expansions) -int32_t GPBGetEnumIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - GPBFileSyntax syntax); +void GPBSetEnumIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + int32_t value); id GPBGetObjectIvarWithField(GPBMessage *self, GPBFieldDescriptor *field); -void GPBSetObjectIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, id value, - GPBFileSyntax syntax); -void GPBSetRetainedObjectIvarWithFieldInternal(GPBMessage *self, - GPBFieldDescriptor *field, - id __attribute__((ns_consumed)) - value, - GPBFileSyntax syntax); +void GPBSetObjectIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, id value); +void GPBSetRetainedObjectIvarWithFieldPrivate(GPBMessage *self, + GPBFieldDescriptor *field, + id __attribute__((ns_consumed)) + value); // GPBGetObjectIvarWithField will automatically create the field (message) if // it doesn't exist. GPBGetObjectIvarWithFieldNoAutocreate will return nil. @@ -311,6 +309,15 @@ const char *GPBMessageEncodingForSelector(SEL selector, BOOL instanceSel); NSString *GPBDecodeTextFormatName(const uint8_t *decodeData, int32_t key, NSString *inputString); + +// Shims from the older generated code into the runtime. +void GPBSetInt32IvarWithFieldInternal(GPBMessage *self, + GPBFieldDescriptor *field, + int32_t value, + GPBFileSyntax syntax); +void GPBMaybeClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof, + int32_t oneofHasIndex, uint32_t fieldNumberNotToClear); + // A series of selectors that are used solely to get @encoding values // for them by the dynamic protobuf runtime code. See // GPBMessageEncodingForSelector for details. GPBRootObject conforms to diff --git a/Pods/Protobuf/objectivec/GPBWellKnownTypes.h b/Pods/Protobuf/objectivec/GPBWellKnownTypes.h index bb6c780..784ba9f 100644 --- a/Pods/Protobuf/objectivec/GPBWellKnownTypes.h +++ b/Pods/Protobuf/objectivec/GPBWellKnownTypes.h @@ -37,13 +37,13 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import + #import + #import + #import #else - #import "google/protobuf/Any.pbobjc.h" - #import "google/protobuf/Duration.pbobjc.h" - #import "google/protobuf/Timestamp.pbobjc.h" + #import "GPBAny.pbobjc.h" + #import "GPBDuration.pbobjc.h" + #import "GPBTimestamp.pbobjc.h" #endif NS_ASSUME_NONNULL_BEGIN diff --git a/Pods/Protobuf/objectivec/GPBWrappers.pbobjc.h b/Pods/Protobuf/objectivec/GPBWrappers.pbobjc.h new file mode 100644 index 0000000..713bafc --- /dev/null +++ b/Pods/Protobuf/objectivec/GPBWrappers.pbobjc.h @@ -0,0 +1,219 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/protobuf/wrappers.proto + +// This CPP symbol can be defined to use imports that match up to the framework +// imports needed when using CocoaPods. +#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) + #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 +#endif + +#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS + #import + #import + #import +#else + #import "GPBDescriptor.h" + #import "GPBMessage.h" + #import "GPBRootObject.h" +#endif + +#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004 +#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. +#endif +#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION +#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. +#endif + +// @@protoc_insertion_point(imports) + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + +CF_EXTERN_C_BEGIN + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - GPBWrappersRoot + +/** + * Exposes the extension registry for this file. + * + * The base class provides: + * @code + * + (GPBExtensionRegistry *)extensionRegistry; + * @endcode + * which is a @c GPBExtensionRegistry that includes all the extensions defined by + * this file and all files that it depends on. + **/ +GPB_FINAL @interface GPBWrappersRoot : GPBRootObject +@end + +#pragma mark - GPBDoubleValue + +typedef GPB_ENUM(GPBDoubleValue_FieldNumber) { + GPBDoubleValue_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `double`. + * + * The JSON representation for `DoubleValue` is JSON number. + **/ +GPB_FINAL @interface GPBDoubleValue : GPBMessage + +/** The double value. */ +@property(nonatomic, readwrite) double value; + +@end + +#pragma mark - GPBFloatValue + +typedef GPB_ENUM(GPBFloatValue_FieldNumber) { + GPBFloatValue_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `float`. + * + * The JSON representation for `FloatValue` is JSON number. + **/ +GPB_FINAL @interface GPBFloatValue : GPBMessage + +/** The float value. */ +@property(nonatomic, readwrite) float value; + +@end + +#pragma mark - GPBInt64Value + +typedef GPB_ENUM(GPBInt64Value_FieldNumber) { + GPBInt64Value_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `int64`. + * + * The JSON representation for `Int64Value` is JSON string. + **/ +GPB_FINAL @interface GPBInt64Value : GPBMessage + +/** The int64 value. */ +@property(nonatomic, readwrite) int64_t value; + +@end + +#pragma mark - GPBUInt64Value + +typedef GPB_ENUM(GPBUInt64Value_FieldNumber) { + GPBUInt64Value_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `uint64`. + * + * The JSON representation for `UInt64Value` is JSON string. + **/ +GPB_FINAL @interface GPBUInt64Value : GPBMessage + +/** The uint64 value. */ +@property(nonatomic, readwrite) uint64_t value; + +@end + +#pragma mark - GPBInt32Value + +typedef GPB_ENUM(GPBInt32Value_FieldNumber) { + GPBInt32Value_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `int32`. + * + * The JSON representation for `Int32Value` is JSON number. + **/ +GPB_FINAL @interface GPBInt32Value : GPBMessage + +/** The int32 value. */ +@property(nonatomic, readwrite) int32_t value; + +@end + +#pragma mark - GPBUInt32Value + +typedef GPB_ENUM(GPBUInt32Value_FieldNumber) { + GPBUInt32Value_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `uint32`. + * + * The JSON representation for `UInt32Value` is JSON number. + **/ +GPB_FINAL @interface GPBUInt32Value : GPBMessage + +/** The uint32 value. */ +@property(nonatomic, readwrite) uint32_t value; + +@end + +#pragma mark - GPBBoolValue + +typedef GPB_ENUM(GPBBoolValue_FieldNumber) { + GPBBoolValue_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `bool`. + * + * The JSON representation for `BoolValue` is JSON `true` and `false`. + **/ +GPB_FINAL @interface GPBBoolValue : GPBMessage + +/** The bool value. */ +@property(nonatomic, readwrite) BOOL value; + +@end + +#pragma mark - GPBStringValue + +typedef GPB_ENUM(GPBStringValue_FieldNumber) { + GPBStringValue_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `string`. + * + * The JSON representation for `StringValue` is JSON string. + **/ +GPB_FINAL @interface GPBStringValue : GPBMessage + +/** The string value. */ +@property(nonatomic, readwrite, copy, null_resettable) NSString *value; + +@end + +#pragma mark - GPBBytesValue + +typedef GPB_ENUM(GPBBytesValue_FieldNumber) { + GPBBytesValue_FieldNumber_Value = 1, +}; + +/** + * Wrapper message for `bytes`. + * + * The JSON representation for `BytesValue` is JSON string. + **/ +GPB_FINAL @interface GPBBytesValue : GPBMessage + +/** The bytes value. */ +@property(nonatomic, readwrite, copy, null_resettable) NSData *value; + +@end + +NS_ASSUME_NONNULL_END + +CF_EXTERN_C_END + +#pragma clang diagnostic pop + +// @@protoc_insertion_point(global_scope) diff --git a/Pods/Protobuf/objectivec/google/protobuf/Wrappers.pbobjc.m b/Pods/Protobuf/objectivec/GPBWrappers.pbobjc.m similarity index 82% rename from Pods/Protobuf/objectivec/google/protobuf/Wrappers.pbobjc.m rename to Pods/Protobuf/objectivec/GPBWrappers.pbobjc.m index f91d345..32201d4 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Wrappers.pbobjc.m +++ b/Pods/Protobuf/objectivec/GPBWrappers.pbobjc.m @@ -8,15 +8,15 @@ #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else #import "GPBProtocolBuffers_RuntimeSupport.h" #endif #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import + #import #else - #import "google/protobuf/Wrappers.pbobjc.h" + #import "GPBWrappers.pbobjc.h" #endif // @@protoc_insertion_point(imports) @@ -66,11 +66,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBDoubleValue_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBDoubleValue__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeDouble, }, }; @@ -81,7 +81,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBDoubleValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -111,11 +111,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBFloatValue_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBFloatValue__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeFloat, }, }; @@ -126,7 +126,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBFloatValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -156,11 +156,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBInt64Value_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBInt64Value__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt64, }, }; @@ -171,7 +171,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBInt64Value__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -201,11 +201,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBUInt64Value_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBUInt64Value__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeUInt64, }, }; @@ -216,7 +216,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBUInt64Value__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -246,11 +246,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBInt32Value_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBInt32Value__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeInt32, }, }; @@ -261,7 +261,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBInt32Value__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -291,11 +291,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBUInt32Value_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBUInt32Value__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeUInt32, }, }; @@ -306,7 +306,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBUInt32Value__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -335,11 +335,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBBoolValue_FieldNumber_Value, .hasIndex = 0, .offset = 1, // Stored in _has_storage_ to save space. - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeBool, }, }; @@ -350,7 +350,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBBoolValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -380,11 +380,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBStringValue_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBStringValue__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeString, }, }; @@ -395,7 +395,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBStringValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG @@ -425,11 +425,11 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "value", - .dataTypeSpecific.className = NULL, + .dataTypeSpecific.clazz = Nil, .number = GPBBytesValue_FieldNumber_Value, .hasIndex = 0, .offset = (uint32_t)offsetof(GPBBytesValue__storage_, value), - .flags = GPBFieldOptional, + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), .dataType = GPBDataTypeBytes, }, }; @@ -440,7 +440,7 @@ + (GPBDescriptor *)descriptor { fields:fields fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBBytesValue__storage_) - flags:GPBDescriptorInitializationFlag_None]; + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); #endif // DEBUG diff --git a/Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.h index f22c8c5..e6d1b74 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.h @@ -1,183 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/any.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBAnyRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBAnyRoot : GPBRootObject -@end - -#pragma mark - GPBAny - -typedef GPB_ENUM(GPBAny_FieldNumber) { - GPBAny_FieldNumber_TypeURL = 1, - GPBAny_FieldNumber_Value = 2, -}; - -/** - * `Any` contains an arbitrary serialized protocol buffer message along with a - * URL that describes the type of the serialized message. - * - * Protobuf library provides support to pack/unpack Any values in the form - * of utility functions or additional generated methods of the Any type. - * - * Example 1: Pack and unpack a message in C++. - * - * Foo foo = ...; - * Any any; - * any.PackFrom(foo); - * ... - * if (any.UnpackTo(&foo)) { - * ... - * } - * - * Example 2: Pack and unpack a message in Java. - * - * Foo foo = ...; - * Any any = Any.pack(foo); - * ... - * if (any.is(Foo.class)) { - * foo = any.unpack(Foo.class); - * } - * - * Example 3: Pack and unpack a message in Python. - * - * foo = Foo(...) - * any = Any() - * any.Pack(foo) - * ... - * if any.Is(Foo.DESCRIPTOR): - * any.Unpack(foo) - * ... - * - * Example 4: Pack and unpack a message in Go - * - * foo := &pb.Foo{...} - * any, err := ptypes.MarshalAny(foo) - * ... - * foo := &pb.Foo{} - * if err := ptypes.UnmarshalAny(any, foo); err != nil { - * ... - * } - * - * The pack methods provided by protobuf library will by default use - * 'type.googleapis.com/full.type.name' as the type URL and the unpack - * methods only use the fully qualified type name after the last '/' - * in the type URL, for example "foo.bar.com/x/y.z" will yield type - * name "y.z". - * - * - * JSON - * ==== - * The JSON representation of an `Any` value uses the regular - * representation of the deserialized, embedded message, with an - * additional field `\@type` which contains the type URL. Example: - * - * package google.profile; - * message Person { - * string first_name = 1; - * string last_name = 2; - * } - * - * { - * "\@type": "type.googleapis.com/google.profile.Person", - * "firstName": , - * "lastName": - * } - * - * If the embedded message type is well-known and has a custom JSON - * representation, that representation will be embedded adding a field - * `value` which holds the custom JSON in addition to the `\@type` - * field. Example (for message [google.protobuf.Duration][]): - * - * { - * "\@type": "type.googleapis.com/google.protobuf.Duration", - * "value": "1.212s" - * } - **/ -@interface GPBAny : GPBMessage - -/** - * A URL/resource name that uniquely identifies the type of the serialized - * protocol buffer message. This string must contain at least - * one "/" character. The last segment of the URL's path must represent - * the fully qualified name of the type (as in - * `path/google.protobuf.Duration`). The name should be in a canonical form - * (e.g., leading "." is not accepted). - * - * In practice, teams usually precompile into the binary all types that they - * expect it to use in the context of Any. However, for URLs which use the - * scheme `http`, `https`, or no scheme, one can optionally set up a type - * server that maps type URLs to message definitions as follows: - * - * * If no scheme is provided, `https` is assumed. - * * An HTTP GET on the URL must yield a [google.protobuf.Type][] - * value in binary format, or produce an error. - * * Applications are allowed to cache lookup results based on the - * URL, or have them precompiled into a binary to avoid any - * lookup. Therefore, binary compatibility needs to be preserved - * on changes to types. (Use versioned type names to manage - * breaking changes.) - * - * Note: this functionality is not currently available in the official - * protobuf release, and it is not used for type URLs beginning with - * type.googleapis.com. - * - * Schemes other than `http`, `https` (or the empty scheme) might be - * used with implementation specific semantics. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *typeURL; - -/** Must be a valid serialized protocol buffer of the above specified type. */ -@property(nonatomic, readwrite, copy, null_resettable) NSData *value; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBAny.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/Api.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Api.pbobjc.h index 99acd04..e7957db 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Api.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Api.pbobjc.h @@ -1,311 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/api.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -@class GPBMethod; -@class GPBMixin; -@class GPBOption; -@class GPBSourceContext; -GPB_ENUM_FWD_DECLARE(GPBSyntax); - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBApiRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBApiRoot : GPBRootObject -@end - -#pragma mark - GPBApi - -typedef GPB_ENUM(GPBApi_FieldNumber) { - GPBApi_FieldNumber_Name = 1, - GPBApi_FieldNumber_MethodsArray = 2, - GPBApi_FieldNumber_OptionsArray = 3, - GPBApi_FieldNumber_Version = 4, - GPBApi_FieldNumber_SourceContext = 5, - GPBApi_FieldNumber_MixinsArray = 6, - GPBApi_FieldNumber_Syntax = 7, -}; - -/** - * Api is a light-weight descriptor for an API Interface. - * - * Interfaces are also described as "protocol buffer services" in some contexts, - * such as by the "service" keyword in a .proto file, but they are different - * from API Services, which represent a concrete implementation of an interface - * as opposed to simply a description of methods and bindings. They are also - * sometimes simply referred to as "APIs" in other contexts, such as the name of - * this message itself. See https://cloud.google.com/apis/design/glossary for - * detailed terminology. - **/ -@interface GPBApi : GPBMessage - -/** - * The fully qualified name of this interface, including package name - * followed by the interface's simple name. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** The methods of this interface, in unspecified order. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *methodsArray; -/** The number of items in @c methodsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger methodsArray_Count; - -/** Any metadata attached to the interface. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; -/** The number of items in @c optionsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger optionsArray_Count; - -/** - * A version string for this interface. If specified, must have the form - * `major-version.minor-version`, as in `1.10`. If the minor version is - * omitted, it defaults to zero. If the entire version field is empty, the - * major version is derived from the package name, as outlined below. If the - * field is not empty, the version in the package name will be verified to be - * consistent with what is provided here. - * - * The versioning schema uses [semantic - * versioning](http://semver.org) where the major version number - * indicates a breaking change and the minor version an additive, - * non-breaking change. Both version numbers are signals to users - * what to expect from different versions, and should be carefully - * chosen based on the product plan. - * - * The major version is also reflected in the package name of the - * interface, which must end in `v`, as in - * `google.feature.v1`. For major versions 0 and 1, the suffix can - * be omitted. Zero major versions must only be used for - * experimental, non-GA interfaces. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *version; - -/** - * Source context for the protocol buffer service represented by this - * message. - **/ -@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext; -/** Test to see if @c sourceContext has been set. */ -@property(nonatomic, readwrite) BOOL hasSourceContext; - -/** Included interfaces. See [Mixin][]. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *mixinsArray; -/** The number of items in @c mixinsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger mixinsArray_Count; - -/** The source syntax of the service. */ -@property(nonatomic, readwrite) enum GPBSyntax syntax; - -@end - -/** - * Fetches the raw value of a @c GPBApi's @c syntax property, even - * if the value was not defined by the enum at the time the code was generated. - **/ -int32_t GPBApi_Syntax_RawValue(GPBApi *message); -/** - * Sets the raw value of an @c GPBApi's @c syntax property, allowing - * it to be set to a value that was not defined by the enum at the time the code - * was generated. - **/ -void SetGPBApi_Syntax_RawValue(GPBApi *message, int32_t value); - -#pragma mark - GPBMethod - -typedef GPB_ENUM(GPBMethod_FieldNumber) { - GPBMethod_FieldNumber_Name = 1, - GPBMethod_FieldNumber_RequestTypeURL = 2, - GPBMethod_FieldNumber_RequestStreaming = 3, - GPBMethod_FieldNumber_ResponseTypeURL = 4, - GPBMethod_FieldNumber_ResponseStreaming = 5, - GPBMethod_FieldNumber_OptionsArray = 6, - GPBMethod_FieldNumber_Syntax = 7, -}; - -/** - * Method represents a method of an API interface. - **/ -@interface GPBMethod : GPBMessage - -/** The simple name of this method. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** A URL of the input message type. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *requestTypeURL; - -/** If true, the request is streamed. */ -@property(nonatomic, readwrite) BOOL requestStreaming; - -/** The URL of the output message type. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *responseTypeURL; - -/** If true, the response is streamed. */ -@property(nonatomic, readwrite) BOOL responseStreaming; - -/** Any metadata attached to the method. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; -/** The number of items in @c optionsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger optionsArray_Count; - -/** The source syntax of this method. */ -@property(nonatomic, readwrite) enum GPBSyntax syntax; - -@end - -/** - * Fetches the raw value of a @c GPBMethod's @c syntax property, even - * if the value was not defined by the enum at the time the code was generated. - **/ -int32_t GPBMethod_Syntax_RawValue(GPBMethod *message); -/** - * Sets the raw value of an @c GPBMethod's @c syntax property, allowing - * it to be set to a value that was not defined by the enum at the time the code - * was generated. - **/ -void SetGPBMethod_Syntax_RawValue(GPBMethod *message, int32_t value); - -#pragma mark - GPBMixin - -typedef GPB_ENUM(GPBMixin_FieldNumber) { - GPBMixin_FieldNumber_Name = 1, - GPBMixin_FieldNumber_Root = 2, -}; - -/** - * Declares an API Interface to be included in this interface. The including - * interface must redeclare all the methods from the included interface, but - * documentation and options are inherited as follows: - * - * - If after comment and whitespace stripping, the documentation - * string of the redeclared method is empty, it will be inherited - * from the original method. - * - * - Each annotation belonging to the service config (http, - * visibility) which is not set in the redeclared method will be - * inherited. - * - * - If an http annotation is inherited, the path pattern will be - * modified as follows. Any version prefix will be replaced by the - * version of the including interface plus the [root][] path if - * specified. - * - * Example of a simple mixin: - * - * package google.acl.v1; - * service AccessControl { - * // Get the underlying ACL object. - * rpc GetAcl(GetAclRequest) returns (Acl) { - * option (google.api.http).get = "/v1/{resource=**}:getAcl"; - * } - * } - * - * package google.storage.v2; - * service Storage { - * rpc GetAcl(GetAclRequest) returns (Acl); - * - * // Get a data record. - * rpc GetData(GetDataRequest) returns (Data) { - * option (google.api.http).get = "/v2/{resource=**}"; - * } - * } - * - * Example of a mixin configuration: - * - * apis: - * - name: google.storage.v2.Storage - * mixins: - * - name: google.acl.v1.AccessControl - * - * The mixin construct implies that all methods in `AccessControl` are - * also declared with same name and request/response types in - * `Storage`. A documentation generator or annotation processor will - * see the effective `Storage.GetAcl` method after inherting - * documentation and annotations as follows: - * - * service Storage { - * // Get the underlying ACL object. - * rpc GetAcl(GetAclRequest) returns (Acl) { - * option (google.api.http).get = "/v2/{resource=**}:getAcl"; - * } - * ... - * } - * - * Note how the version in the path pattern changed from `v1` to `v2`. - * - * If the `root` field in the mixin is specified, it should be a - * relative path under which inherited HTTP paths are placed. Example: - * - * apis: - * - name: google.storage.v2.Storage - * mixins: - * - name: google.acl.v1.AccessControl - * root: acls - * - * This implies the following inherited HTTP annotation: - * - * service Storage { - * // Get the underlying ACL object. - * rpc GetAcl(GetAclRequest) returns (Acl) { - * option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; - * } - * ... - * } - **/ -@interface GPBMixin : GPBMessage - -/** The fully qualified name of the interface which is included. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** - * If non-empty specifies a path under which inherited HTTP paths - * are rooted. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *root; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBApi.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/Duration.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Duration.pbobjc.h index 111a910..fabf00f 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Duration.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Duration.pbobjc.h @@ -1,145 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/duration.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBDurationRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBDurationRoot : GPBRootObject -@end - -#pragma mark - GPBDuration - -typedef GPB_ENUM(GPBDuration_FieldNumber) { - GPBDuration_FieldNumber_Seconds = 1, - GPBDuration_FieldNumber_Nanos = 2, -}; - -/** - * A Duration represents a signed, fixed-length span of time represented - * as a count of seconds and fractions of seconds at nanosecond - * resolution. It is independent of any calendar and concepts like "day" - * or "month". It is related to Timestamp in that the difference between - * two Timestamp values is a Duration and it can be added or subtracted - * from a Timestamp. Range is approximately +-10,000 years. - * - * # Examples - * - * Example 1: Compute Duration from two Timestamps in pseudo code. - * - * Timestamp start = ...; - * Timestamp end = ...; - * Duration duration = ...; - * - * duration.seconds = end.seconds - start.seconds; - * duration.nanos = end.nanos - start.nanos; - * - * if (duration.seconds < 0 && duration.nanos > 0) { - * duration.seconds += 1; - * duration.nanos -= 1000000000; - * } else if (duration.seconds > 0 && duration.nanos < 0) { - * duration.seconds -= 1; - * duration.nanos += 1000000000; - * } - * - * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. - * - * Timestamp start = ...; - * Duration duration = ...; - * Timestamp end = ...; - * - * end.seconds = start.seconds + duration.seconds; - * end.nanos = start.nanos + duration.nanos; - * - * if (end.nanos < 0) { - * end.seconds -= 1; - * end.nanos += 1000000000; - * } else if (end.nanos >= 1000000000) { - * end.seconds += 1; - * end.nanos -= 1000000000; - * } - * - * Example 3: Compute Duration from datetime.timedelta in Python. - * - * td = datetime.timedelta(days=3, minutes=10) - * duration = Duration() - * duration.FromTimedelta(td) - * - * # JSON Mapping - * - * In JSON format, the Duration type is encoded as a string rather than an - * object, where the string ends in the suffix "s" (indicating seconds) and - * is preceded by the number of seconds, with nanoseconds expressed as - * fractional seconds. For example, 3 seconds with 0 nanoseconds should be - * encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should - * be expressed in JSON format as "3.000000001s", and 3 seconds and 1 - * microsecond should be expressed in JSON format as "3.000001s". - **/ -@interface GPBDuration : GPBMessage - -/** - * Signed seconds of the span of time. Must be from -315,576,000,000 - * to +315,576,000,000 inclusive. Note: these bounds are computed from: - * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - **/ -@property(nonatomic, readwrite) int64_t seconds; - -/** - * Signed fractions of a second at nanosecond resolution of the span - * of time. Durations less than one second are represented with a 0 - * `seconds` field and a positive or negative `nanos` field. For durations - * of one second or more, a non-zero value for the `nanos` field must be - * of the same sign as the `seconds` field. Must be from -999,999,999 - * to +999,999,999 inclusive. - **/ -@property(nonatomic, readwrite) int32_t nanos; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBDuration.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/Empty.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Empty.pbobjc.h index 5b1e7b4..4de9108 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Empty.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Empty.pbobjc.h @@ -1,74 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/empty.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBEmptyRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBEmptyRoot : GPBRootObject -@end - -#pragma mark - GPBEmpty - -/** - * A generic empty message that you can re-use to avoid defining duplicated - * empty messages in your APIs. A typical example is to use it as the request - * or the response type of an API method. For instance: - * - * service Foo { - * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); - * } - * - * The JSON representation for `Empty` is empty JSON object `{}`. - **/ -@interface GPBEmpty : GPBMessage - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBEmpty.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/FieldMask.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/FieldMask.pbobjc.h index 92d5042..2691320 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/FieldMask.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/FieldMask.pbobjc.h @@ -1,273 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/field_mask.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBFieldMaskRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBFieldMaskRoot : GPBRootObject -@end - -#pragma mark - GPBFieldMask - -typedef GPB_ENUM(GPBFieldMask_FieldNumber) { - GPBFieldMask_FieldNumber_PathsArray = 1, -}; - -/** - * `FieldMask` represents a set of symbolic field paths, for example: - * - * paths: "f.a" - * paths: "f.b.d" - * - * Here `f` represents a field in some root message, `a` and `b` - * fields in the message found in `f`, and `d` a field found in the - * message in `f.b`. - * - * Field masks are used to specify a subset of fields that should be - * returned by a get operation or modified by an update operation. - * Field masks also have a custom JSON encoding (see below). - * - * # Field Masks in Projections - * - * When used in the context of a projection, a response message or - * sub-message is filtered by the API to only contain those fields as - * specified in the mask. For example, if the mask in the previous - * example is applied to a response message as follows: - * - * f { - * a : 22 - * b { - * d : 1 - * x : 2 - * } - * y : 13 - * } - * z: 8 - * - * The result will not contain specific values for fields x,y and z - * (their value will be set to the default, and omitted in proto text - * output): - * - * - * f { - * a : 22 - * b { - * d : 1 - * } - * } - * - * A repeated field is not allowed except at the last position of a - * paths string. - * - * If a FieldMask object is not present in a get operation, the - * operation applies to all fields (as if a FieldMask of all fields - * had been specified). - * - * Note that a field mask does not necessarily apply to the - * top-level response message. In case of a REST get operation, the - * field mask applies directly to the response, but in case of a REST - * list operation, the mask instead applies to each individual message - * in the returned resource list. In case of a REST custom method, - * other definitions may be used. Where the mask applies will be - * clearly documented together with its declaration in the API. In - * any case, the effect on the returned resource/resources is required - * behavior for APIs. - * - * # Field Masks in Update Operations - * - * A field mask in update operations specifies which fields of the - * targeted resource are going to be updated. The API is required - * to only change the values of the fields as specified in the mask - * and leave the others untouched. If a resource is passed in to - * describe the updated values, the API ignores the values of all - * fields not covered by the mask. - * - * If a repeated field is specified for an update operation, new values will - * be appended to the existing repeated field in the target resource. Note that - * a repeated field is only allowed in the last position of a `paths` string. - * - * If a sub-message is specified in the last position of the field mask for an - * update operation, then new value will be merged into the existing sub-message - * in the target resource. - * - * For example, given the target message: - * - * f { - * b { - * d: 1 - * x: 2 - * } - * c: [1] - * } - * - * And an update message: - * - * f { - * b { - * d: 10 - * } - * c: [2] - * } - * - * then if the field mask is: - * - * paths: ["f.b", "f.c"] - * - * then the result will be: - * - * f { - * b { - * d: 10 - * x: 2 - * } - * c: [1, 2] - * } - * - * An implementation may provide options to override this default behavior for - * repeated and message fields. - * - * In order to reset a field's value to the default, the field must - * be in the mask and set to the default value in the provided resource. - * Hence, in order to reset all fields of a resource, provide a default - * instance of the resource and set all fields in the mask, or do - * not provide a mask as described below. - * - * If a field mask is not present on update, the operation applies to - * all fields (as if a field mask of all fields has been specified). - * Note that in the presence of schema evolution, this may mean that - * fields the client does not know and has therefore not filled into - * the request will be reset to their default. If this is unwanted - * behavior, a specific service may require a client to always specify - * a field mask, producing an error if not. - * - * As with get operations, the location of the resource which - * describes the updated values in the request message depends on the - * operation kind. In any case, the effect of the field mask is - * required to be honored by the API. - * - * ## Considerations for HTTP REST - * - * The HTTP kind of an update operation which uses a field mask must - * be set to PATCH instead of PUT in order to satisfy HTTP semantics - * (PUT must only be used for full updates). - * - * # JSON Encoding of Field Masks - * - * In JSON, a field mask is encoded as a single string where paths are - * separated by a comma. Fields name in each path are converted - * to/from lower-camel naming conventions. - * - * As an example, consider the following message declarations: - * - * message Profile { - * User user = 1; - * Photo photo = 2; - * } - * message User { - * string display_name = 1; - * string address = 2; - * } - * - * In proto a field mask for `Profile` may look as such: - * - * mask { - * paths: "user.display_name" - * paths: "photo" - * } - * - * In JSON, the same mask is represented as below: - * - * { - * mask: "user.displayName,photo" - * } - * - * # Field Masks and Oneof Fields - * - * Field masks treat fields in oneofs just as regular fields. Consider the - * following message: - * - * message SampleMessage { - * oneof test_oneof { - * string name = 4; - * SubMessage sub_message = 9; - * } - * } - * - * The field mask can be: - * - * mask { - * paths: "name" - * } - * - * Or: - * - * mask { - * paths: "sub_message" - * } - * - * Note that oneof type names ("test_oneof" in this case) cannot be used in - * paths. - * - * ## Field Mask Verification - * - * The implementation of any API method which has a FieldMask type field in the - * request should verify the included field paths, and return an - * `INVALID_ARGUMENT` error if any path is unmappable. - **/ -@interface GPBFieldMask : GPBMessage - -/** The set of field mask paths. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *pathsArray; -/** The number of items in @c pathsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger pathsArray_Count; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBFieldMask.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/SourceContext.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/SourceContext.pbobjc.h index b2cdbba..321dfec 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/SourceContext.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/SourceContext.pbobjc.h @@ -1,77 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/source_context.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBSourceContextRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBSourceContextRoot : GPBRootObject -@end - -#pragma mark - GPBSourceContext - -typedef GPB_ENUM(GPBSourceContext_FieldNumber) { - GPBSourceContext_FieldNumber_FileName = 1, -}; - -/** - * `SourceContext` represents information about the source of a - * protobuf element, like the file in which it is defined. - **/ -@interface GPBSourceContext : GPBMessage - -/** - * The path-qualified name of the .proto file that contained the associated - * protobuf element. For example: `"google/protobuf/source_context.proto"`. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *fileName; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBSourceContext.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/Struct.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Struct.pbobjc.h index 8a06de4..1173d16 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Struct.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Struct.pbobjc.h @@ -1,204 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/struct.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -@class GPBListValue; -@class GPBStruct; -@class GPBValue; - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - Enum GPBNullValue - -/** - * `NullValue` is a singleton enumeration to represent the null value for the - * `Value` type union. - * - * The JSON representation for `NullValue` is JSON `null`. - **/ -typedef GPB_ENUM(GPBNullValue) { - /** - * Value used if any message's field encounters a value that is not defined - * by this enum. The message will also have C functions to get/set the rawValue - * of the field. - **/ - GPBNullValue_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, - /** Null value. */ - GPBNullValue_NullValue = 0, -}; - -GPBEnumDescriptor *GPBNullValue_EnumDescriptor(void); - -/** - * Checks to see if the given value is defined by the enum or was not known at - * the time this source was generated. - **/ -BOOL GPBNullValue_IsValidValue(int32_t value); - -#pragma mark - GPBStructRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBStructRoot : GPBRootObject -@end - -#pragma mark - GPBStruct - -typedef GPB_ENUM(GPBStruct_FieldNumber) { - GPBStruct_FieldNumber_Fields = 1, -}; - -/** - * `Struct` represents a structured data value, consisting of fields - * which map to dynamically typed values. In some languages, `Struct` - * might be supported by a native representation. For example, in - * scripting languages like JS a struct is represented as an - * object. The details of that representation are described together - * with the proto support for the language. - * - * The JSON representation for `Struct` is JSON object. - **/ -@interface GPBStruct : GPBMessage - -/** Unordered map of dynamically typed values. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableDictionary *fields; -/** The number of items in @c fields without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger fields_Count; - -@end - -#pragma mark - GPBValue - -typedef GPB_ENUM(GPBValue_FieldNumber) { - GPBValue_FieldNumber_NullValue = 1, - GPBValue_FieldNumber_NumberValue = 2, - GPBValue_FieldNumber_StringValue = 3, - GPBValue_FieldNumber_BoolValue = 4, - GPBValue_FieldNumber_StructValue = 5, - GPBValue_FieldNumber_ListValue = 6, -}; - -typedef GPB_ENUM(GPBValue_Kind_OneOfCase) { - GPBValue_Kind_OneOfCase_GPBUnsetOneOfCase = 0, - GPBValue_Kind_OneOfCase_NullValue = 1, - GPBValue_Kind_OneOfCase_NumberValue = 2, - GPBValue_Kind_OneOfCase_StringValue = 3, - GPBValue_Kind_OneOfCase_BoolValue = 4, - GPBValue_Kind_OneOfCase_StructValue = 5, - GPBValue_Kind_OneOfCase_ListValue = 6, -}; - -/** - * `Value` represents a dynamically typed value which can be either - * null, a number, a string, a boolean, a recursive struct value, or a - * list of values. A producer of value is expected to set one of that - * variants, absence of any variant indicates an error. - * - * The JSON representation for `Value` is JSON value. - **/ -@interface GPBValue : GPBMessage - -/** The kind of value. */ -@property(nonatomic, readonly) GPBValue_Kind_OneOfCase kindOneOfCase; - -/** Represents a null value. */ -@property(nonatomic, readwrite) GPBNullValue nullValue; - -/** Represents a double value. */ -@property(nonatomic, readwrite) double numberValue; - -/** Represents a string value. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *stringValue; - -/** Represents a boolean value. */ -@property(nonatomic, readwrite) BOOL boolValue; - -/** Represents a structured value. */ -@property(nonatomic, readwrite, strong, null_resettable) GPBStruct *structValue; - -/** Represents a repeated `Value`. */ -@property(nonatomic, readwrite, strong, null_resettable) GPBListValue *listValue; - -@end - -/** - * Fetches the raw value of a @c GPBValue's @c nullValue property, even - * if the value was not defined by the enum at the time the code was generated. - **/ -int32_t GPBValue_NullValue_RawValue(GPBValue *message); -/** - * Sets the raw value of an @c GPBValue's @c nullValue property, allowing - * it to be set to a value that was not defined by the enum at the time the code - * was generated. - **/ -void SetGPBValue_NullValue_RawValue(GPBValue *message, int32_t value); - -/** - * Clears whatever value was set for the oneof 'kind'. - **/ -void GPBValue_ClearKindOneOfCase(GPBValue *message); - -#pragma mark - GPBListValue - -typedef GPB_ENUM(GPBListValue_FieldNumber) { - GPBListValue_FieldNumber_ValuesArray = 1, -}; - -/** - * `ListValue` is a wrapper around a repeated field of values. - * - * The JSON representation for `ListValue` is JSON array. - **/ -@interface GPBListValue : GPBMessage - -/** Repeated field of dynamically typed values. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *valuesArray; -/** The number of items in @c valuesArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger valuesArray_Count; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBStruct.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/Timestamp.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Timestamp.pbobjc.h index d351f27..6a7cef8 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Timestamp.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Timestamp.pbobjc.h @@ -1,167 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/timestamp.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBTimestampRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBTimestampRoot : GPBRootObject -@end - -#pragma mark - GPBTimestamp - -typedef GPB_ENUM(GPBTimestamp_FieldNumber) { - GPBTimestamp_FieldNumber_Seconds = 1, - GPBTimestamp_FieldNumber_Nanos = 2, -}; - -/** - * A Timestamp represents a point in time independent of any time zone or local - * calendar, encoded as a count of seconds and fractions of seconds at - * nanosecond resolution. The count is relative to an epoch at UTC midnight on - * January 1, 1970, in the proleptic Gregorian calendar which extends the - * Gregorian calendar backwards to year one. - * - * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap - * second table is needed for interpretation, using a [24-hour linear - * smear](https://developers.google.com/time/smear). - * - * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By - * restricting to that range, we ensure that we can convert to and from [RFC - * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. - * - * # Examples - * - * Example 1: Compute Timestamp from POSIX `time()`. - * - * Timestamp timestamp; - * timestamp.set_seconds(time(NULL)); - * timestamp.set_nanos(0); - * - * Example 2: Compute Timestamp from POSIX `gettimeofday()`. - * - * struct timeval tv; - * gettimeofday(&tv, NULL); - * - * Timestamp timestamp; - * timestamp.set_seconds(tv.tv_sec); - * timestamp.set_nanos(tv.tv_usec * 1000); - * - * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - * - * FILETIME ft; - * GetSystemTimeAsFileTime(&ft); - * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - * - * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z - * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. - * Timestamp timestamp; - * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); - * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - * - * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - * - * long millis = System.currentTimeMillis(); - * - * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) - * .setNanos((int) ((millis % 1000) * 1000000)).build(); - * - * - * Example 5: Compute Timestamp from current time in Python. - * - * timestamp = Timestamp() - * timestamp.GetCurrentTime() - * - * # JSON Mapping - * - * In JSON format, the Timestamp type is encoded as a string in the - * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the - * format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - * where {year} is always expressed using four digits while {month}, {day}, - * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional - * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), - * are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone - * is required. A proto3 JSON serializer should always use UTC (as indicated by - * "Z") when printing the Timestamp type and a proto3 JSON parser should be - * able to accept both UTC and other timezones (as indicated by an offset). - * - * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past - * 01:30 UTC on January 15, 2017. - * - * In JavaScript, one can convert a Date object to this format using the - * standard - * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) - * method. In Python, a standard `datetime.datetime` object can be converted - * to this format using - * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - * the Joda Time's [`ISODateTimeFormat.dateTime()`]( - * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D - * ) to obtain a formatter capable of generating timestamps in this format. - **/ -@interface GPBTimestamp : GPBMessage - -/** - * Represents seconds of UTC time since Unix epoch - * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - * 9999-12-31T23:59:59Z inclusive. - **/ -@property(nonatomic, readwrite) int64_t seconds; - -/** - * Non-negative fractions of a second at nanosecond resolution. Negative - * second values with fractions must still have non-negative nanos values - * that count forward in time. Must be from 0 to 999,999,999 - * inclusive. - **/ -@property(nonatomic, readwrite) int32_t nanos; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBTimestamp.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/Type.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Type.pbobjc.h index 5a54863..e14e7cd 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Type.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Type.pbobjc.h @@ -1,444 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/type.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -@class GPBAny; -@class GPBEnumValue; -@class GPBField; -@class GPBOption; -@class GPBSourceContext; - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - Enum GPBSyntax - -/** The syntax in which a protocol buffer element is defined. */ -typedef GPB_ENUM(GPBSyntax) { - /** - * Value used if any message's field encounters a value that is not defined - * by this enum. The message will also have C functions to get/set the rawValue - * of the field. - **/ - GPBSyntax_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, - /** Syntax `proto2`. */ - GPBSyntax_SyntaxProto2 = 0, - - /** Syntax `proto3`. */ - GPBSyntax_SyntaxProto3 = 1, -}; - -GPBEnumDescriptor *GPBSyntax_EnumDescriptor(void); - -/** - * Checks to see if the given value is defined by the enum or was not known at - * the time this source was generated. - **/ -BOOL GPBSyntax_IsValidValue(int32_t value); - -#pragma mark - Enum GPBField_Kind - -/** Basic field types. */ -typedef GPB_ENUM(GPBField_Kind) { - /** - * Value used if any message's field encounters a value that is not defined - * by this enum. The message will also have C functions to get/set the rawValue - * of the field. - **/ - GPBField_Kind_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, - /** Field type unknown. */ - GPBField_Kind_TypeUnknown = 0, - - /** Field type double. */ - GPBField_Kind_TypeDouble = 1, - - /** Field type float. */ - GPBField_Kind_TypeFloat = 2, - - /** Field type int64. */ - GPBField_Kind_TypeInt64 = 3, - - /** Field type uint64. */ - GPBField_Kind_TypeUint64 = 4, - - /** Field type int32. */ - GPBField_Kind_TypeInt32 = 5, - - /** Field type fixed64. */ - GPBField_Kind_TypeFixed64 = 6, - - /** Field type fixed32. */ - GPBField_Kind_TypeFixed32 = 7, - - /** Field type bool. */ - GPBField_Kind_TypeBool = 8, - - /** Field type string. */ - GPBField_Kind_TypeString = 9, - - /** Field type group. Proto2 syntax only, and deprecated. */ - GPBField_Kind_TypeGroup = 10, - - /** Field type message. */ - GPBField_Kind_TypeMessage = 11, - - /** Field type bytes. */ - GPBField_Kind_TypeBytes = 12, - - /** Field type uint32. */ - GPBField_Kind_TypeUint32 = 13, - - /** Field type enum. */ - GPBField_Kind_TypeEnum = 14, - - /** Field type sfixed32. */ - GPBField_Kind_TypeSfixed32 = 15, - - /** Field type sfixed64. */ - GPBField_Kind_TypeSfixed64 = 16, - - /** Field type sint32. */ - GPBField_Kind_TypeSint32 = 17, - - /** Field type sint64. */ - GPBField_Kind_TypeSint64 = 18, -}; - -GPBEnumDescriptor *GPBField_Kind_EnumDescriptor(void); - -/** - * Checks to see if the given value is defined by the enum or was not known at - * the time this source was generated. - **/ -BOOL GPBField_Kind_IsValidValue(int32_t value); - -#pragma mark - Enum GPBField_Cardinality - -/** Whether a field is optional, required, or repeated. */ -typedef GPB_ENUM(GPBField_Cardinality) { - /** - * Value used if any message's field encounters a value that is not defined - * by this enum. The message will also have C functions to get/set the rawValue - * of the field. - **/ - GPBField_Cardinality_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue, - /** For fields with unknown cardinality. */ - GPBField_Cardinality_CardinalityUnknown = 0, - - /** For optional fields. */ - GPBField_Cardinality_CardinalityOptional = 1, - - /** For required fields. Proto2 syntax only. */ - GPBField_Cardinality_CardinalityRequired = 2, - - /** For repeated fields. */ - GPBField_Cardinality_CardinalityRepeated = 3, -}; - -GPBEnumDescriptor *GPBField_Cardinality_EnumDescriptor(void); - -/** - * Checks to see if the given value is defined by the enum or was not known at - * the time this source was generated. - **/ -BOOL GPBField_Cardinality_IsValidValue(int32_t value); - -#pragma mark - GPBTypeRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBTypeRoot : GPBRootObject -@end - -#pragma mark - GPBType - -typedef GPB_ENUM(GPBType_FieldNumber) { - GPBType_FieldNumber_Name = 1, - GPBType_FieldNumber_FieldsArray = 2, - GPBType_FieldNumber_OneofsArray = 3, - GPBType_FieldNumber_OptionsArray = 4, - GPBType_FieldNumber_SourceContext = 5, - GPBType_FieldNumber_Syntax = 6, -}; - -/** - * A protocol buffer message type. - **/ -@interface GPBType : GPBMessage - -/** The fully qualified message name. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** The list of fields. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *fieldsArray; -/** The number of items in @c fieldsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger fieldsArray_Count; - -/** The list of types appearing in `oneof` definitions in this type. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *oneofsArray; -/** The number of items in @c oneofsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger oneofsArray_Count; - -/** The protocol buffer options. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; -/** The number of items in @c optionsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger optionsArray_Count; - -/** The source context. */ -@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext; -/** Test to see if @c sourceContext has been set. */ -@property(nonatomic, readwrite) BOOL hasSourceContext; - -/** The source syntax. */ -@property(nonatomic, readwrite) GPBSyntax syntax; - -@end - -/** - * Fetches the raw value of a @c GPBType's @c syntax property, even - * if the value was not defined by the enum at the time the code was generated. - **/ -int32_t GPBType_Syntax_RawValue(GPBType *message); -/** - * Sets the raw value of an @c GPBType's @c syntax property, allowing - * it to be set to a value that was not defined by the enum at the time the code - * was generated. - **/ -void SetGPBType_Syntax_RawValue(GPBType *message, int32_t value); - -#pragma mark - GPBField - -typedef GPB_ENUM(GPBField_FieldNumber) { - GPBField_FieldNumber_Kind = 1, - GPBField_FieldNumber_Cardinality = 2, - GPBField_FieldNumber_Number = 3, - GPBField_FieldNumber_Name = 4, - GPBField_FieldNumber_TypeURL = 6, - GPBField_FieldNumber_OneofIndex = 7, - GPBField_FieldNumber_Packed = 8, - GPBField_FieldNumber_OptionsArray = 9, - GPBField_FieldNumber_JsonName = 10, - GPBField_FieldNumber_DefaultValue = 11, -}; - -/** - * A single field of a message type. - **/ -@interface GPBField : GPBMessage - -/** The field type. */ -@property(nonatomic, readwrite) GPBField_Kind kind; - -/** The field cardinality. */ -@property(nonatomic, readwrite) GPBField_Cardinality cardinality; - -/** The field number. */ -@property(nonatomic, readwrite) int32_t number; - -/** The field name. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** - * The field type URL, without the scheme, for message or enumeration - * types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *typeURL; - -/** - * The index of the field type in `Type.oneofs`, for message or enumeration - * types. The first type has index 1; zero means the type is not in the list. - **/ -@property(nonatomic, readwrite) int32_t oneofIndex; - -/** Whether to use alternative packed wire representation. */ -@property(nonatomic, readwrite) BOOL packed; - -/** The protocol buffer options. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; -/** The number of items in @c optionsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger optionsArray_Count; - -/** The field JSON name. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *jsonName; - -/** The string value of the default value of this field. Proto2 syntax only. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *defaultValue; - -@end - -/** - * Fetches the raw value of a @c GPBField's @c kind property, even - * if the value was not defined by the enum at the time the code was generated. - **/ -int32_t GPBField_Kind_RawValue(GPBField *message); -/** - * Sets the raw value of an @c GPBField's @c kind property, allowing - * it to be set to a value that was not defined by the enum at the time the code - * was generated. - **/ -void SetGPBField_Kind_RawValue(GPBField *message, int32_t value); - -/** - * Fetches the raw value of a @c GPBField's @c cardinality property, even - * if the value was not defined by the enum at the time the code was generated. - **/ -int32_t GPBField_Cardinality_RawValue(GPBField *message); -/** - * Sets the raw value of an @c GPBField's @c cardinality property, allowing - * it to be set to a value that was not defined by the enum at the time the code - * was generated. - **/ -void SetGPBField_Cardinality_RawValue(GPBField *message, int32_t value); - -#pragma mark - GPBEnum - -typedef GPB_ENUM(GPBEnum_FieldNumber) { - GPBEnum_FieldNumber_Name = 1, - GPBEnum_FieldNumber_EnumvalueArray = 2, - GPBEnum_FieldNumber_OptionsArray = 3, - GPBEnum_FieldNumber_SourceContext = 4, - GPBEnum_FieldNumber_Syntax = 5, -}; - -/** - * Enum type definition. - **/ -@interface GPBEnum : GPBMessage - -/** Enum type name. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** Enum value definitions. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *enumvalueArray; -/** The number of items in @c enumvalueArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger enumvalueArray_Count; - -/** Protocol buffer options. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; -/** The number of items in @c optionsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger optionsArray_Count; - -/** The source context. */ -@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext; -/** Test to see if @c sourceContext has been set. */ -@property(nonatomic, readwrite) BOOL hasSourceContext; - -/** The source syntax. */ -@property(nonatomic, readwrite) GPBSyntax syntax; - -@end - -/** - * Fetches the raw value of a @c GPBEnum's @c syntax property, even - * if the value was not defined by the enum at the time the code was generated. - **/ -int32_t GPBEnum_Syntax_RawValue(GPBEnum *message); -/** - * Sets the raw value of an @c GPBEnum's @c syntax property, allowing - * it to be set to a value that was not defined by the enum at the time the code - * was generated. - **/ -void SetGPBEnum_Syntax_RawValue(GPBEnum *message, int32_t value); - -#pragma mark - GPBEnumValue - -typedef GPB_ENUM(GPBEnumValue_FieldNumber) { - GPBEnumValue_FieldNumber_Name = 1, - GPBEnumValue_FieldNumber_Number = 2, - GPBEnumValue_FieldNumber_OptionsArray = 3, -}; - -/** - * Enum value definition. - **/ -@interface GPBEnumValue : GPBMessage - -/** Enum value name. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** Enum value number. */ -@property(nonatomic, readwrite) int32_t number; - -/** Protocol buffer options. */ -@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray; -/** The number of items in @c optionsArray without causing the array to be created. */ -@property(nonatomic, readonly) NSUInteger optionsArray_Count; - -@end - -#pragma mark - GPBOption - -typedef GPB_ENUM(GPBOption_FieldNumber) { - GPBOption_FieldNumber_Name = 1, - GPBOption_FieldNumber_Value = 2, -}; - -/** - * A protocol buffer option, which can be attached to a message, field, - * enumeration, etc. - **/ -@interface GPBOption : GPBMessage - -/** - * The option's name. For protobuf built-in options (options defined in - * descriptor.proto), this is the short name. For example, `"map_entry"`. - * For custom options, it should be the fully-qualified name. For example, - * `"google.api.http"`. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *name; - -/** - * The option's value packed in an Any message. If the value is a primitive, - * the corresponding wrapper type defined in google/protobuf/wrappers.proto - * should be used. If the value is an enum, it should be stored as an int32 - * value using the google.protobuf.Int32Value type. - **/ -@property(nonatomic, readwrite, strong, null_resettable) GPBAny *value; -/** Test to see if @c value has been set. */ -@property(nonatomic, readwrite) BOOL hasValue; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBType.pbobjc.h" diff --git a/Pods/Protobuf/objectivec/google/protobuf/Wrappers.pbobjc.h b/Pods/Protobuf/objectivec/google/protobuf/Wrappers.pbobjc.h index a9d3646..8365afc 100644 --- a/Pods/Protobuf/objectivec/google/protobuf/Wrappers.pbobjc.h +++ b/Pods/Protobuf/objectivec/google/protobuf/Wrappers.pbobjc.h @@ -1,219 +1,2 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/wrappers.proto - -// This CPP symbol can be defined to use imports that match up to the framework -// imports needed when using CocoaPods. -#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) - #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0 -#endif - -#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS - #import - #import - #import -#else - #import "GPBDescriptor.h" - #import "GPBMessage.h" - #import "GPBRootObject.h" -#endif - -#if GOOGLE_PROTOBUF_OBJC_VERSION < 30002 -#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources. -#endif -#if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION -#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources. -#endif - -// @@protoc_insertion_point(imports) - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -CF_EXTERN_C_BEGIN - -NS_ASSUME_NONNULL_BEGIN - -#pragma mark - GPBWrappersRoot - -/** - * Exposes the extension registry for this file. - * - * The base class provides: - * @code - * + (GPBExtensionRegistry *)extensionRegistry; - * @endcode - * which is a @c GPBExtensionRegistry that includes all the extensions defined by - * this file and all files that it depends on. - **/ -@interface GPBWrappersRoot : GPBRootObject -@end - -#pragma mark - GPBDoubleValue - -typedef GPB_ENUM(GPBDoubleValue_FieldNumber) { - GPBDoubleValue_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `double`. - * - * The JSON representation for `DoubleValue` is JSON number. - **/ -@interface GPBDoubleValue : GPBMessage - -/** The double value. */ -@property(nonatomic, readwrite) double value; - -@end - -#pragma mark - GPBFloatValue - -typedef GPB_ENUM(GPBFloatValue_FieldNumber) { - GPBFloatValue_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `float`. - * - * The JSON representation for `FloatValue` is JSON number. - **/ -@interface GPBFloatValue : GPBMessage - -/** The float value. */ -@property(nonatomic, readwrite) float value; - -@end - -#pragma mark - GPBInt64Value - -typedef GPB_ENUM(GPBInt64Value_FieldNumber) { - GPBInt64Value_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `int64`. - * - * The JSON representation for `Int64Value` is JSON string. - **/ -@interface GPBInt64Value : GPBMessage - -/** The int64 value. */ -@property(nonatomic, readwrite) int64_t value; - -@end - -#pragma mark - GPBUInt64Value - -typedef GPB_ENUM(GPBUInt64Value_FieldNumber) { - GPBUInt64Value_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `uint64`. - * - * The JSON representation for `UInt64Value` is JSON string. - **/ -@interface GPBUInt64Value : GPBMessage - -/** The uint64 value. */ -@property(nonatomic, readwrite) uint64_t value; - -@end - -#pragma mark - GPBInt32Value - -typedef GPB_ENUM(GPBInt32Value_FieldNumber) { - GPBInt32Value_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `int32`. - * - * The JSON representation for `Int32Value` is JSON number. - **/ -@interface GPBInt32Value : GPBMessage - -/** The int32 value. */ -@property(nonatomic, readwrite) int32_t value; - -@end - -#pragma mark - GPBUInt32Value - -typedef GPB_ENUM(GPBUInt32Value_FieldNumber) { - GPBUInt32Value_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `uint32`. - * - * The JSON representation for `UInt32Value` is JSON number. - **/ -@interface GPBUInt32Value : GPBMessage - -/** The uint32 value. */ -@property(nonatomic, readwrite) uint32_t value; - -@end - -#pragma mark - GPBBoolValue - -typedef GPB_ENUM(GPBBoolValue_FieldNumber) { - GPBBoolValue_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `bool`. - * - * The JSON representation for `BoolValue` is JSON `true` and `false`. - **/ -@interface GPBBoolValue : GPBMessage - -/** The bool value. */ -@property(nonatomic, readwrite) BOOL value; - -@end - -#pragma mark - GPBStringValue - -typedef GPB_ENUM(GPBStringValue_FieldNumber) { - GPBStringValue_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `string`. - * - * The JSON representation for `StringValue` is JSON string. - **/ -@interface GPBStringValue : GPBMessage - -/** The string value. */ -@property(nonatomic, readwrite, copy, null_resettable) NSString *value; - -@end - -#pragma mark - GPBBytesValue - -typedef GPB_ENUM(GPBBytesValue_FieldNumber) { - GPBBytesValue_FieldNumber_Value = 1, -}; - -/** - * Wrapper message for `bytes`. - * - * The JSON representation for `BytesValue` is JSON string. - **/ -@interface GPBBytesValue : GPBMessage - -/** The bytes value. */ -@property(nonatomic, readwrite, copy, null_resettable) NSData *value; - -@end - -NS_ASSUME_NONNULL_END - -CF_EXTERN_C_END - -#pragma clang diagnostic pop - -// @@protoc_insertion_point(global_scope) +// Moved to root of objectivec directory, shim to keep anyone's imports working. +#import "GPBWrappers.pbobjc.h" diff --git a/Pods/Target Support Files/Firebase/Firebase.xcconfig b/Pods/Target Support Files/Firebase/Firebase.xcconfig index 30a9d88..197ce37 100644 --- a/Pods/Target Support Files/Firebase/Firebase.xcconfig +++ b/Pods/Target Support Files/Firebase/Firebase.xcconfig @@ -1,8 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Firebase -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Firebase" "${PODS_ROOT}/Headers/Public" -OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "Accelerate" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Foundation" -framework "LocalAuthentication" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "Accelerate" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Foundation" -framework "LocalAuthentication" -framework "StoreKit" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.xcconfig b/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.xcconfig new file mode 100644 index 0000000..af966ec --- /dev/null +++ b/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.xcconfig @@ -0,0 +1,11 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAnalytics +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "StoreKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/FirebaseAnalytics +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/FirebaseAnalyticsInterop/FirebaseAnalyticsInterop.xcconfig b/Pods/Target Support Files/FirebaseAnalyticsInterop/FirebaseAnalyticsInterop.xcconfig deleted file mode 100644 index b4498ac..0000000 --- a/Pods/Target Support Files/FirebaseAnalyticsInterop/FirebaseAnalyticsInterop.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAnalyticsInterop -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FirebaseAnalyticsInterop" "${PODS_ROOT}/Headers/Public" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/FirebaseAnalyticsInterop -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist b/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist index 768af0c..24cdb41 100644 --- a/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist +++ b/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 6.6.3 + 6.8.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig b/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig index 1a8915d..6907dcf 100644 --- a/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig +++ b/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig @@ -1,8 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRCore_VERSION=6.6.3 Firebase_VERSION=6.18.0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_TARGET_SRCROOT}" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRCore_VERSION=6.8.0 Firebase_VERSION=6.27.0 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}" OTHER_CFLAGS = $(inherited) -fno-autolink PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist b/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist index 19f73ea..7b6b52a 100644 --- a/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist +++ b/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.2.1 + 1.4.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h b/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h index d6c0706..11dc659 100644 --- a/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h +++ b/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h @@ -11,6 +11,8 @@ #endif #import "firebasecore.nanopb.h" +#import "FIRCoreDiagnosticsData.h" +#import "FIRCoreDiagnosticsInterop.h" FOUNDATION_EXPORT double FirebaseCoreDiagnosticsVersionNumber; FOUNDATION_EXPORT const unsigned char FirebaseCoreDiagnosticsVersionString[]; diff --git a/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.xcconfig b/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.xcconfig index 08d790f..fcfb7aa 100644 --- a/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.xcconfig +++ b/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.xcconfig @@ -1,10 +1,10 @@ CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" GCC_C_LANGUAGE_STANDARD = c99 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 GCC_TREAT_WARNINGS_AS_ERRORS = YES -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_TARGET_SRCROOT}/Firebase/CoreDiagnostics/" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}" "${PODS_TARGET_SRCROOT}/Firebase/CoreDiagnostics/" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Pods/Target Support Files/FirebaseCoreDiagnosticsInterop/FirebaseCoreDiagnosticsInterop.xcconfig b/Pods/Target Support Files/FirebaseCoreDiagnosticsInterop/FirebaseCoreDiagnosticsInterop.xcconfig deleted file mode 100644 index 66fd960..0000000 --- a/Pods/Target Support Files/FirebaseCoreDiagnosticsInterop/FirebaseCoreDiagnosticsInterop.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnosticsInterop -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/FirebaseCoreDiagnosticsInterop -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist b/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist index 3424ca6..6631be7 100644 --- a/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist +++ b/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.0 + 4.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-umbrella.h b/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-umbrella.h index bfb0118..5e7f179 100644 --- a/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-umbrella.h +++ b/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-umbrella.h @@ -12,6 +12,8 @@ #import "FIRCrashlytics.h" #import "FirebaseCrashlytics.h" +#import "FIRExceptionModel.h" +#import "FIRStackFrame.h" FOUNDATION_EXPORT double FirebaseCrashlyticsVersionNumber; FOUNDATION_EXPORT const unsigned char FirebaseCrashlyticsVersionString[]; diff --git a/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.xcconfig b/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.xcconfig index 4593f02..c4ccf67 100644 --- a/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.xcconfig +++ b/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.xcconfig @@ -1,8 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 DISPLAY_VERSION=4.0.0-beta.4 CLS_SDK_NAME="Crashlytics iOS SDK" -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 DISPLAY_VERSION=4.2.0 CLS_SDK_NAME="Crashlytics iOS SDK" PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}" OTHER_LD_FLAGS = $(inherited) -sectcreate __TEXT __info_plist PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist b/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist index 21a30b4..7b6b52a 100644 --- a/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist +++ b/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.1.0 + 1.4.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.xcconfig b/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.xcconfig index bf477db..14bc504 100644 --- a/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.xcconfig +++ b/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.xcconfig @@ -1,8 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRInstallations_LIB_VERSION=1.1.0 FIR_INSTALLATIONS_ALLOWS_INCOMPATIBLE_IID_VERSION=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRInstallations_LIB_VERSION=1.4.0 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist b/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist index 98bddcf..df27649 100644 --- a/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist +++ b/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.3.2 + 4.4.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig b/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig index 0525dff..39e1acc 100644 --- a/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig +++ b/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig @@ -1,8 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRInstanceID_LIB_VERSION=4.3.2 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRInstanceID_LIB_VERSION=4.4.0 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Pods/Target Support Files/FirebaseMLCommon/FirebaseMLCommon.xcconfig b/Pods/Target Support Files/FirebaseMLCommon/FirebaseMLCommon.xcconfig index ffaac33..ed42550 100644 --- a/Pods/Target Support Files/FirebaseMLCommon/FirebaseMLCommon.xcconfig +++ b/Pods/Target Support Files/FirebaseMLCommon/FirebaseMLCommon.xcconfig @@ -1,7 +1,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseMLCommon FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "Foundation" -framework "LocalAuthentication" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/FirebaseMLVision/FirebaseMLVision.xcconfig b/Pods/Target Support Files/FirebaseMLVision/FirebaseMLVision.xcconfig index e857c0b..15daced 100644 --- a/Pods/Target Support Files/FirebaseMLVision/FirebaseMLVision.xcconfig +++ b/Pods/Target Support Files/FirebaseMLVision/FirebaseMLVision.xcconfig @@ -1,7 +1,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseMLVision FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "Accelerate" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreVideo" -framework "Foundation" -framework "LocalAuthentication" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/FirebaseMLVisionTextModel/FirebaseMLVisionTextModel.xcconfig b/Pods/Target Support Files/FirebaseMLVisionTextModel/FirebaseMLVisionTextModel.xcconfig index 79b2250..b9db011 100644 --- a/Pods/Target Support Files/FirebaseMLVisionTextModel/FirebaseMLVisionTextModel.xcconfig +++ b/Pods/Target Support Files/FirebaseMLVisionTextModel/FirebaseMLVisionTextModel.xcconfig @@ -1,7 +1,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseMLVisionTextModel FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = $(inherited) -l"c++" -framework "AVFoundation" -framework "Accelerate" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Foundation" -framework "LocalAuthentication" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist b/Pods/Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist index ce8dd23..12c388c 100644 --- a/Pods/Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist +++ b/Pods/Target Support Files/FirebaseMLVisionTextModel/ResourceBundle-GoogleMVTextDetectorResources-FirebaseMLVisionTextModel-Info.plist @@ -13,7 +13,7 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 0.19.0 + 0.20.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist b/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist index 10f280e..7b6b52a 100644 --- a/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist +++ b/Pods/Target Support Files/GTMSessionFetcher/GTMSessionFetcher-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.3.1 + 1.4.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/GTMSessionFetcher/Info.plist b/Pods/Target Support Files/GTMSessionFetcher/Info.plist deleted file mode 100644 index 19f73ea..0000000 --- a/Pods/Target Support Files/GTMSessionFetcher/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.2.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-Info.plist b/Pods/Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-Info.plist index fec8cf6..78afe08 100644 --- a/Pods/Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-Info.plist +++ b/Pods/Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.3.11 + 1.4.2 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/GoogleAPIClientForREST/Info.plist b/Pods/Target Support Files/GoogleAPIClientForREST/Info.plist deleted file mode 100644 index 8d4bef9..0000000 --- a/Pods/Target Support Files/GoogleAPIClientForREST/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.3.7 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.xcconfig b/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.xcconfig new file mode 100644 index 0000000..7a8ce57 --- /dev/null +++ b/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.xcconfig @@ -0,0 +1,11 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleAppMeasurement +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "StoreKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/GoogleAppMeasurement +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist b/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist index b672cd7..7e52625 100644 --- a/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist +++ b/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.1 + 6.2.1 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h b/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h index 6b79543..eb436e1 100644 --- a/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h +++ b/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h @@ -13,15 +13,15 @@ #import "GDTCORAssert.h" #import "GDTCORClock.h" #import "GDTCORConsoleLogger.h" -#import "GDTCORDataFuture.h" #import "GDTCOREvent.h" #import "GDTCOREventDataObject.h" #import "GDTCOREventTransformer.h" #import "GDTCORLifecycle.h" #import "GDTCORPlatform.h" #import "GDTCORPrioritizer.h" +#import "GDTCORReachability.h" #import "GDTCORRegistrar.h" -#import "GDTCORStoredEvent.h" +#import "GDTCORStorageProtocol.h" #import "GDTCORTargets.h" #import "GDTCORTransport.h" #import "GDTCORUploader.h" diff --git a/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig b/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig index 73e2b7a..9eb91b6 100644 --- a/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig +++ b/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig @@ -1,7 +1,7 @@ CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GDTCOR_VERSION=4.0.1 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GDTCOR_VERSION=6.2.1 GCC_TREAT_WARNINGS_AS_ERRORS = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}/GoogleDataTransport/" PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist b/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist index 93197ee..9ae03a0 100644 --- a/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist +++ b/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.4.1 + 3.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-umbrella.h b/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-umbrella.h index 7f5ac1c..f17d9d8 100644 --- a/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-umbrella.h +++ b/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-umbrella.h @@ -10,7 +10,7 @@ #endif #endif -#import "cct.nanopb.h" +#import "GDTCOREvent+GDTCCTSupport.h" FOUNDATION_EXPORT double GoogleDataTransportCCTSupportVersionNumber; FOUNDATION_EXPORT const unsigned char GoogleDataTransportCCTSupportVersionString[]; diff --git a/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig b/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig index 639499c..ede445c 100644 --- a/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig +++ b/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig @@ -2,7 +2,7 @@ CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 GDTCCTSUPPORT_VERSION=1.4.1 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 GDTCCTSUPPORT_VERSION=3.2.0 GCC_TREAT_WARNINGS_AS_ERRORS = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}/GoogleDataTransportCCTSupport/" PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Pods/Target Support Files/GoogleToolboxForMac/Info.plist b/Pods/Target Support Files/GoogleToolboxForMac/Info.plist deleted file mode 100644 index 57b76a5..0000000 --- a/Pods/Target Support Files/GoogleToolboxForMac/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.1.4 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist b/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist index 07e37a2..3fe24c0 100644 --- a/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist +++ b/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 6.5.1 + 6.6.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h b/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h index 2b68b6a..508e631 100644 --- a/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h +++ b/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h @@ -11,6 +11,8 @@ #endif #import "GULLoggerLevel.h" +#import "GULLoggerCodes.h" +#import "GULNSData+zlib.h" FOUNDATION_EXPORT double GoogleUtilitiesVersionNumber; FOUNDATION_EXPORT const unsigned char GoogleUtilitiesVersionString[]; diff --git a/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig b/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig index 29f3559..07b83c7 100644 --- a/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig +++ b/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig @@ -1,7 +1,9 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" GCC_C_LANGUAGE_STANDARD = c99 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_TARGET_SRCROOT}" +OTHER_LDFLAGS = $(inherited) -l"z" -framework "Security" -framework "SystemConfiguration" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Pods/Target Support Files/GoogleUtilities/Info.plist b/Pods/Target Support Files/GoogleUtilities/Info.plist deleted file mode 100644 index afb56d6..0000000 --- a/Pods/Target Support Files/GoogleUtilities/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 5.3.6 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.markdown b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.markdown index b385ad8..f256387 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.markdown @@ -254,211 +254,9 @@ THE SOFTWARE. limitations under the License. -## FirebaseAnalyticsInterop - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +## FirebaseAnalytics +Copyright 2020 Google ## FirebaseCore @@ -872,212 +670,6 @@ THE SOFTWARE. limitations under the License. -## FirebaseCoreDiagnosticsInterop - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - ## FirebaseCrashlytics @@ -1726,15 +1318,15 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## FirebaseMLCommon -Copyright 2019 Google +Copyright 2020 Google ## FirebaseMLVision -Copyright 2019 Google +Copyright 2020 Google ## FirebaseMLVisionTextModel -Copyright 2019 Google +Copyright 2020 Google ## GTMSessionFetcher @@ -2148,6 +1740,10 @@ Copyright 2019 Google limitations under the License. +## GoogleAppMeasurement + +Copyright 2020 Google + ## GoogleDataTransport diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.plist b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.plist index daaf0ca..59d8c0f 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-acknowledgements.plist @@ -285,213 +285,11 @@ THE SOFTWARE. FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - + Copyright 2020 Google License - Apache + Copyright Title - FirebaseAnalyticsInterop + FirebaseAnalytics Type PSGroupSpecifier @@ -1112,218 +910,6 @@ THE SOFTWARE. Copyright [yyyy] [name of copyright owner] - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - License - Apache - Title - FirebaseCoreDiagnosticsInterop - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -1797,7 +1383,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FooterText - Copyright 2019 Google + Copyright 2020 Google License Copyright Title @@ -1807,7 +1393,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FooterText - Copyright 2019 Google + Copyright 2020 Google License Copyright Title @@ -1817,7 +1403,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FooterText - Copyright 2019 Google + Copyright 2020 Google License Copyright Title @@ -2249,6 +1835,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Type PSGroupSpecifier + + FooterText + Copyright 2020 Google + License + Copyright + Title + GoogleAppMeasurement + Type + PSGroupSpecifier + FooterText diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-input-files.xcfilelist index bbade69..c2e8bef 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-input-files.xcfilelist @@ -10,7 +10,7 @@ ${BUILT_PRODUCTS_DIR}/MarqueeLabel/MarqueeLabel.framework ${BUILT_PRODUCTS_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework ${BUILT_PRODUCTS_DIR}/Popover/Popover.framework ${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework -${BUILT_PRODUCTS_DIR}/Protobuf/protobuf.framework +${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework ${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-output-files.xcfilelist index 2e0f520..d5f0337 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Debug-output-files.xcfilelist @@ -9,7 +9,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MarqueeLabel.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NotificationBannerSwift.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Popover.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/protobuf.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-input-files.xcfilelist index bbade69..c2e8bef 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-input-files.xcfilelist @@ -10,7 +10,7 @@ ${BUILT_PRODUCTS_DIR}/MarqueeLabel/MarqueeLabel.framework ${BUILT_PRODUCTS_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework ${BUILT_PRODUCTS_DIR}/Popover/Popover.framework ${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework -${BUILT_PRODUCTS_DIR}/Protobuf/protobuf.framework +${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework ${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-output-files.xcfilelist index 2e0f520..d5f0337 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks-Release-output-files.xcfilelist @@ -9,7 +9,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MarqueeLabel.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NotificationBannerSwift.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Popover.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/protobuf.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks.sh b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks.sh index 74f1d77..dacd435 100755 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks.sh +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan-frameworks.sh @@ -172,7 +172,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/Popover/Popover.framework" install_framework "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Protobuf/protobuf.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework" install_framework "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework" @@ -191,7 +191,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/Popover/Popover.framework" install_framework "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Protobuf/protobuf.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework" install_framework "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework" diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.debug.xcconfig b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.debug.xcconfig index 0b0293d..e1ef377 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.debug.xcconfig +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.debug.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalyticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseInstanceID" -framework "FirebaseMLCommon" -framework "FirebaseMLVision" -framework "FirebaseMLVisionTextModel" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleDataTransport" -framework "GoogleDataTransportCCTSupport" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" -framework "protobuf" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "FIRAnalyticsConnector" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseInstanceID" -framework "FirebaseMLCommon" -framework "FirebaseMLVision" -framework "FirebaseMLVisionTextModel" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleAppMeasurement" -framework "GoogleDataTransport" -framework "GoogleDataTransportCCTSupport" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "Protobuf" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.release.xcconfig b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.release.xcconfig index 0b0293d..e1ef377 100644 --- a/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.release.xcconfig +++ b/Pods/Target Support Files/Pods-FoodScan/Pods-FoodScan.release.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalyticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseInstanceID" -framework "FirebaseMLCommon" -framework "FirebaseMLVision" -framework "FirebaseMLVisionTextModel" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleDataTransport" -framework "GoogleDataTransportCCTSupport" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" -framework "protobuf" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "FIRAnalyticsConnector" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseInstanceID" -framework "FirebaseMLCommon" -framework "FirebaseMLVision" -framework "FirebaseMLVisionTextModel" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleAppMeasurement" -framework "GoogleDataTransport" -framework "GoogleDataTransportCCTSupport" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "Protobuf" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.debug.xcconfig b/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.debug.xcconfig index 9ab0729..c5c3ba5 100644 --- a/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.debug.xcconfig @@ -1,7 +1,7 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalyticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" -OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" -framework "protobuf" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "Protobuf" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.release.xcconfig b/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.release.xcconfig index 9ab0729..c5c3ba5 100644 --- a/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-FoodScanTests/Pods-FoodScanTests.release.xcconfig @@ -1,7 +1,7 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalyticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" -OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" -framework "protobuf" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "Protobuf" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.debug.xcconfig b/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.debug.xcconfig index 9ab0729..c5c3ba5 100644 --- a/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.debug.xcconfig @@ -1,7 +1,7 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalyticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" -OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" -framework "protobuf" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "Protobuf" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.release.xcconfig b/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.release.xcconfig index 9ab0729..c5c3ba5 100644 --- a/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.release.xcconfig +++ b/Pods/Target Support Files/Pods-FoodScanUITests/Pods-FoodScanUITests.release.xcconfig @@ -1,7 +1,7 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Popover" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebaseMLCommon/Frameworks" "${PODS_ROOT}/FirebaseMLVision/Frameworks" "${PODS_ROOT}/FirebaseMLVisionTextModel/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalyticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" -OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" -framework "protobuf" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cosmos/Cosmos.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST/GoogleAPIClientForREST.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MarqueeLabel/MarqueeLabel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NotificationBannerSwift/NotificationBannerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Popover/Popover.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Cosmos" -framework "FBLPromises" -framework "Foundation" -framework "GTMSessionFetcher" -framework "GoogleAPIClientForREST" -framework "GoogleToolboxForMac" -framework "GoogleUtilities" -framework "IQKeyboardManagerSwift" -framework "ImageIO" -framework "LocalAuthentication" -framework "MarqueeLabel" -framework "NotificationBannerSwift" -framework "Popover" -framework "Protobuf" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "SwiftyJSON" -framework "SystemConfiguration" -framework "UIKit" -framework "UILoadControl" -framework "nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist b/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist index f5f78f7..57e52a1 100644 --- a/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist +++ b/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.2.8 + 1.2.9 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/Protobuf/Info.plist b/Pods/Target Support Files/Protobuf/Info.plist deleted file mode 100644 index 646f73c..0000000 --- a/Pods/Target Support Files/Protobuf/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 3.6.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Protobuf/Protobuf-Info.plist b/Pods/Target Support Files/Protobuf/Protobuf-Info.plist index 6b2dc44..1130dfd 100644 --- a/Pods/Target Support Files/Protobuf/Protobuf-Info.plist +++ b/Pods/Target Support Files/Protobuf/Protobuf-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 3.11.4 + 3.12.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/Protobuf/Protobuf-umbrella.h b/Pods/Target Support Files/Protobuf/Protobuf-umbrella.h index 53d1bf2..c3ab612 100644 --- a/Pods/Target Support Files/Protobuf/Protobuf-umbrella.h +++ b/Pods/Target Support Files/Protobuf/Protobuf-umbrella.h @@ -10,6 +10,8 @@ #endif #endif +#import "GPBAny.pbobjc.h" +#import "GPBApi.pbobjc.h" #import "GPBArray.h" #import "GPBArray_PackagePrivate.h" #import "GPBBootstrap.h" @@ -21,8 +23,11 @@ #import "GPBDescriptor_PackagePrivate.h" #import "GPBDictionary.h" #import "GPBDictionary_PackagePrivate.h" +#import "GPBDuration.pbobjc.h" +#import "GPBEmpty.pbobjc.h" #import "GPBExtensionInternals.h" #import "GPBExtensionRegistry.h" +#import "GPBFieldMask.pbobjc.h" #import "GPBMessage.h" #import "GPBMessage_PackagePrivate.h" #import "GPBProtocolBuffers.h" @@ -30,6 +35,10 @@ #import "GPBRootObject.h" #import "GPBRootObject_PackagePrivate.h" #import "GPBRuntimeTypes.h" +#import "GPBSourceContext.pbobjc.h" +#import "GPBStruct.pbobjc.h" +#import "GPBTimestamp.pbobjc.h" +#import "GPBType.pbobjc.h" #import "GPBUnknownField.h" #import "GPBUnknownFieldSet.h" #import "GPBUnknownFieldSet_PackagePrivate.h" @@ -38,6 +47,7 @@ #import "GPBUtilities_PackagePrivate.h" #import "GPBWellKnownTypes.h" #import "GPBWireFormat.h" +#import "GPBWrappers.pbobjc.h" #import "Any.pbobjc.h" #import "Api.pbobjc.h" #import "Duration.pbobjc.h" @@ -49,6 +59,6 @@ #import "Type.pbobjc.h" #import "Wrappers.pbobjc.h" -FOUNDATION_EXPORT double protobufVersionNumber; -FOUNDATION_EXPORT const unsigned char protobufVersionString[]; +FOUNDATION_EXPORT double ProtobufVersionNumber; +FOUNDATION_EXPORT const unsigned char ProtobufVersionString[]; diff --git a/Pods/Target Support Files/Protobuf/Protobuf.modulemap b/Pods/Target Support Files/Protobuf/Protobuf.modulemap index a0f2922..57d3b39 100644 --- a/Pods/Target Support Files/Protobuf/Protobuf.modulemap +++ b/Pods/Target Support Files/Protobuf/Protobuf.modulemap @@ -1,4 +1,4 @@ -framework module protobuf { +framework module Protobuf { umbrella header "Protobuf-umbrella.h" export * diff --git a/Pods/Target Support Files/nanopb/Info.plist b/Pods/Target Support Files/nanopb/Info.plist deleted file mode 100644 index dbeb19f..0000000 --- a/Pods/Target Support Files/nanopb/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.3.901 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/nanopb/nanopb-Info.plist b/Pods/Target Support Files/nanopb/nanopb-Info.plist index bcc2778..aaca2d5 100644 --- a/Pods/Target Support Files/nanopb/nanopb-Info.plist +++ b/Pods/Target Support Files/nanopb/nanopb-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.3.9011 + 1.30905.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/nanopb/README.md b/Pods/nanopb/README.md index 07860f0..1a73cdd 100644 --- a/Pods/nanopb/README.md +++ b/Pods/nanopb/README.md @@ -18,8 +18,8 @@ Using the nanopb library ------------------------ To use the nanopb library, you need to do two things: -1. Compile your .proto files for nanopb, using protoc. -2. Include pb_encode.c, pb_decode.c and pb_common.c in your project. +1. Compile your .proto files for nanopb, using `protoc`. +2. Include *pb_encode.c*, *pb_decode.c* and *pb_common.c* in your project. The easiest way to get started is to study the project in "examples/simple". It contains a Makefile, which should work directly under most Linux systems. @@ -30,23 +30,23 @@ README.txt in that folder. Using the Protocol Buffers compiler (protoc) -------------------------------------------- -The nanopb generator is implemented as a plugin for the Google's own protoc +The nanopb generator is implemented as a plugin for the Google's own `protoc` compiler. This has the advantage that there is no need to reimplement the basic parsing of .proto files. However, it does mean that you need the Google's protobuf library in order to run the generator. If you have downloaded a binary package for nanopb (either Windows, Linux or -Mac OS X version), the 'protoc' binary is included in the 'generator-bin' +Mac OS X version), the `protoc` binary is included in the 'generator-bin' folder. In this case, you are ready to go. Simply run this command: generator-bin/protoc --nanopb_out=. myprotocol.proto However, if you are using a git checkout or a plain source distribution, you -need to provide your own version of protoc and the Google's protobuf library. -On Linux, the necessary packages are protobuf-compiler and python-protobuf. +need to provide your own version of `protoc` and the Google's protobuf library. +On Linux, the necessary packages are `protobuf-compiler` and `python-protobuf`. On Windows, you can either build Google's protobuf library from source or use one of the binary distributions of it. In either case, if you use a separate -protoc, you need to manually give the path to nanopb generator: +`protoc`, you need to manually give the path to nanopb generator: protoc --plugin=protoc-gen-nanopb=nanopb/generator/protoc-gen-nanopb ... @@ -57,7 +57,7 @@ Running the tests If you want to perform further development of the nanopb core, or to verify its functionality using your compiler and platform, you'll want to run the test suite. The build rules for the test suite are implemented using Scons, -so you need to have that installed. To run the tests: +so you need to have that installed (ex: `sudo apt install scons` on Ubuntu). To run the tests: cd tests scons diff --git a/Pods/nanopb/pb.h b/Pods/nanopb/pb.h index 174a84b..2c5868b 100644 --- a/Pods/nanopb/pb.h +++ b/Pods/nanopb/pb.h @@ -38,6 +38,11 @@ /* #define PB_OLD_CALLBACK_STYLE */ +/* Don't encode scalar arrays as packed. This is only to be used when + * the decoder on the receiving side cannot process packed scalar arrays. + * Such example is older protobuf.js. */ +/* #define PB_ENCODE_ARRAYS_UNPACKED 1 */ + /****************************************************************** * You usually don't need to change anything below this line. * * Feel free to look around and use the defined macros, though. * @@ -46,7 +51,7 @@ /* Version of the nanopb library. Just in case you want to check it in * your own program. */ -#define NANOPB_VERSION nanopb-0.3.9.1 +#define NANOPB_VERSION nanopb-0.3.9.5 /* Include all the system headers needed by nanopb. You will need the * definitions of the following: @@ -145,39 +150,40 @@ typedef uint_least8_t pb_type_t; /**** Field data types ****/ /* Numeric types */ -#define PB_LTYPE_VARINT 0x00 /* int32, int64, enum, bool */ -#define PB_LTYPE_UVARINT 0x01 /* uint32, uint64 */ -#define PB_LTYPE_SVARINT 0x02 /* sint32, sint64 */ -#define PB_LTYPE_FIXED32 0x03 /* fixed32, sfixed32, float */ -#define PB_LTYPE_FIXED64 0x04 /* fixed64, sfixed64, double */ +#define PB_LTYPE_BOOL 0x00 /* bool */ +#define PB_LTYPE_VARINT 0x01 /* int32, int64, enum, bool */ +#define PB_LTYPE_UVARINT 0x02 /* uint32, uint64 */ +#define PB_LTYPE_SVARINT 0x03 /* sint32, sint64 */ +#define PB_LTYPE_FIXED32 0x04 /* fixed32, sfixed32, float */ +#define PB_LTYPE_FIXED64 0x05 /* fixed64, sfixed64, double */ /* Marker for last packable field type. */ -#define PB_LTYPE_LAST_PACKABLE 0x04 +#define PB_LTYPE_LAST_PACKABLE 0x05 /* Byte array with pre-allocated buffer. * data_size is the length of the allocated PB_BYTES_ARRAY structure. */ -#define PB_LTYPE_BYTES 0x05 +#define PB_LTYPE_BYTES 0x06 /* String with pre-allocated buffer. * data_size is the maximum length. */ -#define PB_LTYPE_STRING 0x06 +#define PB_LTYPE_STRING 0x07 /* Submessage * submsg_fields is pointer to field descriptions */ -#define PB_LTYPE_SUBMESSAGE 0x07 +#define PB_LTYPE_SUBMESSAGE 0x08 /* Extension pseudo-field * The field contains a pointer to pb_extension_t */ -#define PB_LTYPE_EXTENSION 0x08 +#define PB_LTYPE_EXTENSION 0x09 /* Byte array with inline, pre-allocated byffer. * data_size is the length of the inline, allocated buffer. * This differs from PB_LTYPE_BYTES by defining the element as * pb_byte_t[data_size] rather than pb_bytes_array_t. */ -#define PB_LTYPE_FIXED_LENGTH_BYTES 0x09 +#define PB_LTYPE_FIXED_LENGTH_BYTES 0x0A /* Number of declared LTYPES */ -#define PB_LTYPES_COUNT 0x0A +#define PB_LTYPES_COUNT 0x0B #define PB_LTYPE_MASK 0x0F /**** Field repetition rules ****/ @@ -486,7 +492,7 @@ struct pb_extension_s { PB_OPTIONAL_CALLBACK(tag, st, m, fd, ltype, ptr) /* The mapping from protobuf types to LTYPEs is done using these macros. */ -#define PB_LTYPE_MAP_BOOL PB_LTYPE_VARINT +#define PB_LTYPE_MAP_BOOL PB_LTYPE_BOOL #define PB_LTYPE_MAP_BYTES PB_LTYPE_BYTES #define PB_LTYPE_MAP_DOUBLE PB_LTYPE_FIXED64 #define PB_LTYPE_MAP_ENUM PB_LTYPE_VARINT diff --git a/Pods/nanopb/pb_decode.c b/Pods/nanopb/pb_decode.c index 4b80e81..ce5c4ae 100644 --- a/Pods/nanopb/pb_decode.c +++ b/Pods/nanopb/pb_decode.c @@ -34,6 +34,7 @@ static bool checkreturn decode_extension(pb_istream_t *stream, uint32_t tag, pb_ static bool checkreturn find_extension_field(pb_field_iter_t *iter); static void pb_field_set_to_default(pb_field_iter_t *iter); static void pb_message_set_to_defaults(const pb_field_t fields[], void *dest_struct); +static bool checkreturn pb_dec_bool(pb_istream_t *stream, const pb_field_t *field, void *dest); static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_t *field, void *dest); static bool checkreturn pb_decode_varint32_eof(pb_istream_t *stream, uint32_t *dest, bool *eof); static bool checkreturn pb_dec_uvarint(pb_istream_t *stream, const pb_field_t *field, void *dest); @@ -65,6 +66,7 @@ static void pb_release_single_field(const pb_field_iter_t *iter); * Order in the array must match pb_action_t LTYPE numbering. */ static const pb_decoder_t PB_DECODERS[PB_LTYPES_COUNT] = { + &pb_dec_bool, &pb_dec_varint, &pb_dec_uvarint, &pb_dec_svarint, @@ -99,6 +101,9 @@ static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t co bool checkreturn pb_read(pb_istream_t *stream, pb_byte_t *buf, size_t count) { + if (count == 0) + return true; + #ifndef PB_BUFFER_ONLY if (buf == NULL && stream->callback != buf_read) { @@ -486,6 +491,16 @@ static bool checkreturn allocate_field(pb_istream_t *stream, void *pData, size_t if (data_size == 0 || array_size == 0) PB_RETURN_ERROR(stream, "invalid size"); +#ifdef __AVR__ + /* Workaround for AVR libc bug 53284: http://savannah.nongnu.org/bugs/?53284 + * Realloc to size of 1 byte can cause corruption of the malloc structures. + */ + if (data_size == 1 && array_size == 1) + { + data_size = 2; + } +#endif + /* Check for multiplication overflows. * This code avoids the costly division if the sizes are small enough. * Multiplication is safe as long as only half of bits are set @@ -592,12 +607,25 @@ static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_ while (substream.bytes_left) { + if (*size == PB_SIZE_MAX) + { +#ifndef PB_NO_ERRMSG + stream->errmsg = "too many array entries"; +#endif + status = false; + break; + } + if ((size_t)*size + 1 > allocated_size) { /* Allocate more storage. This tries to guess the * number of remaining entries. Round the division * upwards. */ - allocated_size += (substream.bytes_left - 1) / iter->pos->data_size + 1; + size_t remain = (substream.bytes_left - 1) / iter->pos->data_size + 1; + if (remain < PB_SIZE_MAX - allocated_size) + allocated_size += remain; + else + allocated_size += 1; if (!allocate_field(&substream, iter->pData, iter->pos->data_size, allocated_size)) { @@ -615,15 +643,6 @@ static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_ break; } - if (*size == PB_SIZE_MAX) - { -#ifndef PB_NO_ERRMSG - stream->errmsg = "too many array entries"; -#endif - status = false; - break; - } - (*size)++; } if (!pb_close_string_substream(stream, &substream)) @@ -640,11 +659,11 @@ static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_ if (*size == PB_SIZE_MAX) PB_RETURN_ERROR(stream, "too many array entries"); - (*size)++; - if (!allocate_field(stream, iter->pData, iter->pos->data_size, *size)) + if (!allocate_field(stream, iter->pData, iter->pos->data_size, (size_t)(*size + 1))) return false; - pItem = *(char**)iter->pData + iter->pos->data_size * (*size - 1); + pItem = *(char**)iter->pData + iter->pos->data_size * (*size); + (*size)++; initialize_pointer_field(pItem, iter); return func(stream, iter->pos, pItem); } @@ -658,15 +677,20 @@ static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_ static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter) { pb_callback_t *pCallback = (pb_callback_t*)iter->pData; - #ifdef PB_OLD_CALLBACK_STYLE - void *arg = pCallback->arg; + void *arg; #else - void **arg = &(pCallback->arg); + void **arg; #endif if (pCallback == NULL || pCallback->funcs.decode == NULL) return pb_skip_field(stream, wire_type); + +#ifdef PB_OLD_CALLBACK_STYLE + arg = pCallback->arg; +#else + arg = &(pCallback->arg); +#endif if (wire_type == PB_WT_STRING) { @@ -1153,7 +1177,7 @@ static void pb_release_single_field(const pb_field_iter_t *iter) ext = ext->next; } } - else if (PB_LTYPE(type) == PB_LTYPE_SUBMESSAGE) + else if (PB_LTYPE(type) == PB_LTYPE_SUBMESSAGE && PB_ATYPE(type) != PB_ATYPE_CALLBACK) { /* Release fields in submessage or submsg array */ void *pItem = iter->pData; @@ -1237,6 +1261,11 @@ void pb_release(const pb_field_t fields[], void *dest_struct) /* Field decoders */ +bool pb_decode_bool(pb_istream_t *stream, bool *dest) +{ + return pb_dec_bool(stream, NULL, (void*)dest); +} + bool pb_decode_svarint(pb_istream_t *stream, pb_int64_t *dest) { pb_uint64_t value; @@ -1286,6 +1315,17 @@ bool pb_decode_fixed64(pb_istream_t *stream, void *dest) } #endif +static bool checkreturn pb_dec_bool(pb_istream_t *stream, const pb_field_t *field, void *dest) +{ + uint32_t value; + PB_UNUSED(field); + if (!pb_decode_varint32(stream, &value)) + return false; + + *(bool*)dest = (value != 0); + return true; +} + static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_t *field, void *dest) { pb_uint64_t value; diff --git a/Pods/nanopb/pb_decode.h b/Pods/nanopb/pb_decode.h index 398b24a..3577c20 100644 --- a/Pods/nanopb/pb_decode.h +++ b/Pods/nanopb/pb_decode.h @@ -134,7 +134,7 @@ bool pb_decode_tag(pb_istream_t *stream, pb_wire_type_t *wire_type, uint32_t *ta /* Skip the field payload data, given the wire type. */ bool pb_skip_field(pb_istream_t *stream, pb_wire_type_t wire_type); -/* Decode an integer in the varint format. This works for bool, enum, int32, +/* Decode an integer in the varint format. This works for enum, int32, * int64, uint32 and uint64 field types. */ #ifndef PB_WITHOUT_64BIT bool pb_decode_varint(pb_istream_t *stream, uint64_t *dest); @@ -142,10 +142,13 @@ bool pb_decode_varint(pb_istream_t *stream, uint64_t *dest); #define pb_decode_varint pb_decode_varint32 #endif -/* Decode an integer in the varint format. This works for bool, enum, int32, +/* Decode an integer in the varint format. This works for enum, int32, * and uint32 field types. */ bool pb_decode_varint32(pb_istream_t *stream, uint32_t *dest); +/* Decode a bool value in varint format. */ +bool pb_decode_bool(pb_istream_t *stream, bool *dest); + /* Decode an integer in the zig-zagged svarint format. This works for sint32 * and sint64. */ #ifndef PB_WITHOUT_64BIT diff --git a/Pods/nanopb/pb_encode.c b/Pods/nanopb/pb_encode.c index 089172c..0f89d98 100644 --- a/Pods/nanopb/pb_encode.c +++ b/Pods/nanopb/pb_encode.c @@ -28,6 +28,7 @@ static bool checkreturn encode_field(pb_ostream_t *stream, const pb_field_t *fie static bool checkreturn default_extension_encoder(pb_ostream_t *stream, const pb_extension_t *extension); static bool checkreturn encode_extension_field(pb_ostream_t *stream, const pb_field_t *field, const void *pData); static void *pb_const_cast(const void *p); +static bool checkreturn pb_enc_bool(pb_ostream_t *stream, const pb_field_t *field, const void *src); static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_t *field, const void *src); static bool checkreturn pb_enc_uvarint(pb_ostream_t *stream, const pb_field_t *field, const void *src); static bool checkreturn pb_enc_svarint(pb_ostream_t *stream, const pb_field_t *field, const void *src); @@ -52,6 +53,7 @@ static bool checkreturn pb_encode_negative_varint(pb_ostream_t *stream, pb_uint6 * Order in the array must match pb_action_t LTYPE numbering. */ static const pb_encoder_t PB_ENCODERS[PB_LTYPES_COUNT] = { + &pb_enc_bool, &pb_enc_varint, &pb_enc_uvarint, &pb_enc_svarint, @@ -100,7 +102,7 @@ pb_ostream_t pb_ostream_from_buffer(pb_byte_t *buf, size_t bufsize) bool checkreturn pb_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count) { - if (stream->callback != NULL) + if (count > 0 && stream->callback != NULL) { if (stream->bytes_written + count > stream->max_size) PB_RETURN_ERROR(stream, "stream full"); @@ -122,20 +124,39 @@ bool checkreturn pb_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t cou * Encode a single field * *************************/ +/* Read a bool value without causing undefined behavior even if the value + * is invalid. See issue #434 and + * https://stackoverflow.com/questions/27661768/weird-results-for-conditional + */ +static bool safe_read_bool(const void *pSize) +{ + const char *p = (const char *)pSize; + size_t i; + for (i = 0; i < sizeof(bool); i++) + { + if (p[i] != 0) + return true; + } + return false; +} + /* Encode a static array. Handles the size calculations and possible packing. */ static bool checkreturn encode_array(pb_ostream_t *stream, const pb_field_t *field, const void *pData, size_t count, pb_encoder_t func) { size_t i; const void *p; +#ifndef PB_ENCODE_ARRAYS_UNPACKED size_t size; - +#endif + if (count == 0) return true; if (PB_ATYPE(field->type) != PB_ATYPE_POINTER && count > field->array_size) PB_RETURN_ERROR(stream, "array max size exceeded"); +#ifndef PB_ENCODE_ARRAYS_UNPACKED /* We always pack arrays if the datatype allows it. */ if (PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE) { @@ -180,6 +201,7 @@ static bool checkreturn encode_array(pb_ostream_t *stream, const pb_field_t *fie } } else +#endif { p = pData; for (i = 0; i < count; i++) @@ -225,17 +247,20 @@ static bool pb_check_proto3_default_value(const pb_field_t *field, const void *p else if (PB_HTYPE(type) == PB_HTYPE_REPEATED) { /* Repeated fields inside proto3 submessage: present if count != 0 */ - return *(const pb_size_t*)pSize == 0; + if (field->size_offset != 0) + return *(const pb_size_t*)pSize == 0; + else if (PB_ATYPE(type) == PB_ATYPE_STATIC) + return false; /* Fixed length array */ } else if (PB_HTYPE(type) == PB_HTYPE_ONEOF) { /* Oneof fields */ return *(const pb_size_t*)pSize == 0; } - else if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && field->size_offset) + else if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && field->size_offset != 0) { /* Proto2 optional fields inside proto3 submessage */ - return *(const bool*)pSize == false; + return safe_read_bool(pSize) == false; } /* Rest is proto3 singular fields */ @@ -351,7 +376,7 @@ static bool checkreturn encode_basic_field(pb_ostream_t *stream, break; case PB_HTYPE_OPTIONAL: - if (*(const bool*)pSize) + if (safe_read_bool(pSize)) { if (!pb_encode_tag_for_field(stream, field)) return false; @@ -643,6 +668,7 @@ bool checkreturn pb_encode_tag_for_field(pb_ostream_t *stream, const pb_field_t pb_wire_type_t wiretype; switch (PB_LTYPE(field->type)) { + case PB_LTYPE_BOOL: case PB_LTYPE_VARINT: case PB_LTYPE_UVARINT: case PB_LTYPE_SVARINT: @@ -731,6 +757,13 @@ bool checkreturn pb_encode_submessage(pb_ostream_t *stream, const pb_field_t fie /* Field encoders */ +static bool checkreturn pb_enc_bool(pb_ostream_t *stream, const pb_field_t *field, const void *src) +{ + uint32_t value = safe_read_bool(src) ? 1 : 0; + PB_UNUSED(field); + return pb_encode_varint(stream, value); +} + static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_t *field, const void *src) { pb_int64_t value = 0;