diff --git a/AnonymousAuth/FirebaseAnonymousAuthUI/FUIAnonymousAuth.m b/AnonymousAuth/FirebaseAnonymousAuthUI/FUIAnonymousAuth.m index 07cc62440bf..2836796e115 100644 --- a/AnonymousAuth/FirebaseAnonymousAuthUI/FUIAnonymousAuth.m +++ b/AnonymousAuth/FirebaseAnonymousAuthUI/FUIAnonymousAuth.m @@ -88,8 +88,7 @@ - (NSString *)signInLabel { } - (UIImage *)icon { - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - return [FUIAuthUtils imageNamed:@"ic_anonymous" fromBundle:bundle]; + return [FUIAuthUtils imageNamed:@"ic_anonymous" fromBundleNameOrNil:FUIAuthBundleName]; } - (UIColor *)buttonBackgroundColor { diff --git a/Auth/FirebaseAuthUI/FUIAuthUtils.m b/Auth/FirebaseAuthUI/FUIAuthUtils.m index 717bdc6c29d..af67a40b7e7 100644 --- a/Auth/FirebaseAuthUI/FUIAuthUtils.m +++ b/Auth/FirebaseAuthUI/FUIAuthUtils.m @@ -22,29 +22,37 @@ @implementation FUIAuthUtils + (NSBundle *)bundleNamed:(NSString *)bundleName { NSBundle *frameworkBundle = nil; - if (bundleName) { - NSString *path = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"bundle"]; - if (path == nil) { - // Check framework resources if bundle isn't present in main bundle. - path = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"framework"]; - } - frameworkBundle = [NSBundle bundleWithPath:path]; - } else { + if (!bundleName) { + bundleName = FUIAuthBundleName; + } + NSString *path = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"bundle"]; + if (!path) { + // Check framework resources if bundle isn't present in main bundle. + path = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"framework"]; + } + frameworkBundle = [NSBundle bundleWithPath:path]; + if (!frameworkBundle) { frameworkBundle = [NSBundle bundleForClass:[self class]]; } return frameworkBundle; } + (UIImage *)imageNamed:(NSString *)name fromBundle:(NSBundle *)bundle { - if (bundle == nil) { + if (!bundle) { bundle = [self bundleNamed:nil]; } NSString *path = [bundle pathForResource:name ofType:@"png"]; + if (!path) { + NSLog(@"Warning: Unable to find asset %@ in bundle %@.", name, bundle); + } return [UIImage imageWithContentsOfFile:path]; } + (UIImage *)imageNamed:(NSString *)name fromBundleNameOrNil:(nullable NSString *)bundleNameOrNil { NSString *path = [[FUIAuthUtils bundleNamed:bundleNameOrNil] pathForResource:name ofType:@"png"]; + if (!path) { + NSLog(@"Warning: Unable to find asset %@ in bundle named %@.", name, bundleNameOrNil); + } return [UIImage imageWithContentsOfFile:path]; } diff --git a/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.m b/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.m index e747404dab9..92d14c9c094 100644 --- a/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.m +++ b/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.m @@ -119,7 +119,7 @@ - (NSString *)signInLabel { } - (UIImage *)icon { - return [FUIAuthUtils imageNamed:@"ic_email" fromBundle:[NSBundle bundleForClass:[self class]]]; + return [FUIAuthUtils imageNamed:@"ic_email" fromBundleNameOrNil:FUIEmailAuthBundleName]; } - (UIColor *)buttonBackgroundColor { diff --git a/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignUpViewController.m b/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignUpViewController.m index 868f0f313a7..811cd187418 100755 --- a/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignUpViewController.m +++ b/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignUpViewController.m @@ -332,7 +332,7 @@ - (UIButton *)visibilityToggleButtonForPasswordField { - (void)updateIconForRightViewButton:(UIButton *)button { NSString *imageName = _passwordField.secureTextEntry ? @"ic_visibility" : @"ic_visibility_off"; - UIImage *image = [FUIAuthUtils imageNamed:imageName fromBundle:[FUIAuthUtils bundleNamed:FUIAuthBundleName]]; + UIImage *image = [FUIAuthUtils imageNamed:imageName fromBundleNameOrNil:FUIAuthBundleName]; [button setImage:image forState:UIControlStateNormal]; } diff --git a/FacebookAuth/FirebaseFacebookAuthUI/FUIFacebookAuth.m b/FacebookAuth/FirebaseFacebookAuthUI/FUIFacebookAuth.m index dfca12111c6..a168bd6ab5d 100644 --- a/FacebookAuth/FirebaseFacebookAuthUI/FUIFacebookAuth.m +++ b/FacebookAuth/FirebaseFacebookAuthUI/FUIFacebookAuth.m @@ -108,7 +108,7 @@ - (NSString *)signInLabel { } - (UIImage *)icon { - return [FUIAuthUtils imageNamed:@"ic_facebook" fromBundle:[NSBundle bundleForClass:[self class]]]; + return [FUIAuthUtils imageNamed:@"ic_facebook" fromBundleNameOrNil:kBundleName]; } - (UIColor *)buttonBackgroundColor { @@ -222,7 +222,7 @@ - (void)callbackWithCredential:(nullable FIRAuthCredential *)credential @brief Validates that Facebook SDK data was filled in Info.plist and creates Facebook login manager */ - (void)configureProvider { - NSBundle *bundle = [FUIAuthUtils bundleNamed:nil]; + NSBundle *bundle = [NSBundle mainBundle]; NSString *facebookAppId = [bundle objectForInfoDictionaryKey:kFacebookAppId]; NSString *facebookDisplayName = [bundle objectForInfoDictionaryKey:kFacebookDisplayName]; diff --git a/GoogleAuth/FirebaseGoogleAuthUI/FUIGoogleAuth.m b/GoogleAuth/FirebaseGoogleAuthUI/FUIGoogleAuth.m index dfcb1318af1..472256fcc02 100644 --- a/GoogleAuth/FirebaseGoogleAuthUI/FUIGoogleAuth.m +++ b/GoogleAuth/FirebaseGoogleAuthUI/FUIGoogleAuth.m @@ -97,7 +97,7 @@ - (NSString *)signInLabel { } - (UIImage *)icon { - return [FUIAuthUtils imageNamed:@"ic_google" fromBundle:[NSBundle bundleForClass:[self class]]]; + return [FUIAuthUtils imageNamed:@"ic_google" fromBundleNameOrNil:kBundleName]; } - (UIColor *)buttonBackgroundColor { diff --git a/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneAuth.m b/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneAuth.m index 109e1f6f26b..e5012e1f9b6 100644 --- a/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneAuth.m +++ b/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneAuth.m @@ -102,7 +102,7 @@ - (NSString *)signInLabel { } - (UIImage *)icon { - return [FUIAuthUtils imageNamed:@"ic_phone" fromBundle:[NSBundle bundleForClass:[self class]]]; + return [FUIAuthUtils imageNamed:@"ic_phone" fromBundleNameOrNil:FUIPhoneAuthBundleName]; } - (UIColor *)buttonBackgroundColor { diff --git a/TwitterAuth/FirebaseTwitterAuthUI/FUITwitterAuth.m b/TwitterAuth/FirebaseTwitterAuthUI/FUITwitterAuth.m index 5d794f777fa..96aa91b124c 100644 --- a/TwitterAuth/FirebaseTwitterAuthUI/FUITwitterAuth.m +++ b/TwitterAuth/FirebaseTwitterAuthUI/FUITwitterAuth.m @@ -74,7 +74,7 @@ - (NSString *)signInLabel { } - (UIImage *)icon { - return [FUIAuthUtils imageNamed:@"ic_twitter" fromBundle:[NSBundle bundleForClass:[self class]]]; + return [FUIAuthUtils imageNamed:@"ic_twitter" fromBundleNameOrNil:kBundleName]; } - (UIColor *)buttonBackgroundColor { diff --git a/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj b/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj index 823c73952f3..9a879f563d2 100644 --- a/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj +++ b/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj @@ -332,7 +332,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 1010; ORGANIZATIONNAME = "Firebase, Inc."; TargetAttributes = { 8DABC9841D3D82D600453807 = { @@ -632,14 +632,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -682,14 +690,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/samples/swift/Podfile.lock b/samples/swift/Podfile.lock index 7480627dee7..b91a8a70b40 100644 --- a/samples/swift/Podfile.lock +++ b/samples/swift/Podfile.lock @@ -5,53 +5,54 @@ PODS: - Bolts/AppLinks (1.9.0): - Bolts/Tasks - Bolts/Tasks (1.9.0) - - BoringSSL-GRPC (0.0.2): - - BoringSSL-GRPC/Implementation (= 0.0.2) - - BoringSSL-GRPC/Interface (= 0.0.2) - - BoringSSL-GRPC/Implementation (0.0.2): - - BoringSSL-GRPC/Interface (= 0.0.2) - - BoringSSL-GRPC/Interface (0.0.2) - - FBSDKCoreKit (4.38.1): + - BoringSSL (10.0.6): + - BoringSSL/Implementation (= 10.0.6) + - BoringSSL/Interface (= 10.0.6) + - BoringSSL/Implementation (10.0.6): + - BoringSSL/Interface (= 10.0.6) + - BoringSSL/Interface (10.0.6) + - FBSDKCoreKit (4.39.1): - Bolts (~> 1.9) - - FBSDKLoginKit (4.38.1): + - FBSDKLoginKit (4.39.1): - FBSDKCoreKit - - Firebase/Auth (5.13.0): + - Firebase/Auth (5.15.0): - Firebase/CoreOnly - - FirebaseAuth (= 5.0.5) - - Firebase/CoreOnly (5.13.0): - - FirebaseCore (= 5.1.8) - - Firebase/Database (5.13.0): + - FirebaseAuth (= 5.2.0) + - Firebase/CoreOnly (5.15.0): + - FirebaseCore (= 5.1.10) + - Firebase/Database (5.15.0): - Firebase/CoreOnly - - FirebaseDatabase (= 5.0.3) - - Firebase/Firestore (5.13.0): + - FirebaseDatabase (= 5.0.4) + - Firebase/Firestore (5.15.0): - Firebase/CoreOnly - - FirebaseFirestore (= 0.15.0) - - Firebase/Storage (5.13.0): + - FirebaseFirestore (= 0.16.1) + - Firebase/Storage (5.15.0): - Firebase/CoreOnly - FirebaseStorage (= 3.0.3) - - FirebaseAuth (5.0.5): + - FirebaseAuth (5.2.0): - FirebaseAuthInterop (~> 1.0) - FirebaseCore (~> 5.1) - GoogleUtilities/Environment (~> 5.2) - GTMSessionFetcher/Core (~> 1.1) - FirebaseAuthInterop (1.0.0) - - FirebaseCore (5.1.8): + - FirebaseCore (5.1.10): - GoogleUtilities/Logger (~> 5.2) - - FirebaseDatabase (5.0.3): - - FirebaseCore (~> 5.0) + - FirebaseDatabase (5.0.4): + - FirebaseAuthInterop (~> 1.0) + - FirebaseCore (~> 5.1) - leveldb-library (~> 1.18) - - FirebaseFirestore (0.15.0): + - FirebaseFirestore (0.16.1): - FirebaseAuthInterop (~> 1.0) - FirebaseCore (~> 5.1) - - FirebaseFirestore/abseil-cpp (= 0.15.0) - - "gRPC-C++ (~> 0.0.3)" + - FirebaseFirestore/abseil-cpp (= 0.16.1) + - "gRPC-C++ (= 0.0.5)" - leveldb-library (~> 1.20) - nanopb (~> 0.3.8) - Protobuf (~> 3.1) - - FirebaseFirestore/abseil-cpp (0.15.0): + - FirebaseFirestore/abseil-cpp (0.16.1): - FirebaseAuthInterop (~> 1.0) - FirebaseCore (~> 5.1) - - "gRPC-C++ (~> 0.0.3)" + - "gRPC-C++ (= 0.0.5)" - leveldb-library (~> 1.20) - nanopb (~> 0.3.8) - Protobuf (~> 3.1) @@ -94,45 +95,38 @@ PODS: - FirebaseUI/Twitter (5.2.2): - FirebaseUI/Auth - TwitterKit (~> 3.0) - - GoogleSignIn (4.3.0): + - GoogleSignIn (4.4.0): - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" - "GoogleToolboxForMac/NSString+URLArguments (~> 2.1)" - - GTMOAuth2 (~> 1.0) - GTMSessionFetcher/Core (~> 1.1) - - GoogleToolboxForMac/DebugUtils (2.1.4): - - GoogleToolboxForMac/Defines (= 2.1.4) - - GoogleToolboxForMac/Defines (2.1.4) - - "GoogleToolboxForMac/NSDictionary+URLArguments (2.1.4)": - - GoogleToolboxForMac/DebugUtils (= 2.1.4) - - GoogleToolboxForMac/Defines (= 2.1.4) - - "GoogleToolboxForMac/NSString+URLArguments (= 2.1.4)" - - "GoogleToolboxForMac/NSString+URLArguments (2.1.4)" + - GoogleToolboxForMac/DebugUtils (2.2.0): + - GoogleToolboxForMac/Defines (= 2.2.0) + - GoogleToolboxForMac/Defines (2.2.0) + - "GoogleToolboxForMac/NSDictionary+URLArguments (2.2.0)": + - GoogleToolboxForMac/DebugUtils (= 2.2.0) + - GoogleToolboxForMac/Defines (= 2.2.0) + - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.0)" + - "GoogleToolboxForMac/NSString+URLArguments (2.2.0)" - GoogleUtilities/Environment (5.3.6) - GoogleUtilities/Logger (5.3.6): - GoogleUtilities/Environment - - "gRPC-C++ (0.0.4)": - - "gRPC-C++/Implementation (= 0.0.4)" - - "gRPC-C++/Interface (= 0.0.4)" - - "gRPC-C++/Implementation (0.0.4)": - - "gRPC-C++/Interface (= 0.0.4)" - - gRPC-Core (= 1.17.0-pre1) + - "gRPC-C++ (0.0.5)": + - "gRPC-C++/Implementation (= 0.0.5)" + - "gRPC-C++/Interface (= 0.0.5)" + - "gRPC-C++/Implementation (0.0.5)": + - "gRPC-C++/Interface (= 0.0.5)" + - gRPC-Core (= 1.14.0) - nanopb (~> 0.3) - - "gRPC-C++/Interface (0.0.4)" - - gRPC-Core (1.17.0-pre1): - - gRPC-Core/Implementation (= 1.17.0-pre1) - - gRPC-Core/Interface (= 1.17.0-pre1) - - gRPC-Core/Implementation (1.17.0-pre1): - - BoringSSL-GRPC (= 0.0.2) - - gRPC-Core/Interface (= 1.17.0-pre1) + - "gRPC-C++/Interface (0.0.5)" + - gRPC-Core (1.14.0): + - gRPC-Core/Implementation (= 1.14.0) + - gRPC-Core/Interface (= 1.14.0) + - gRPC-Core/Implementation (1.14.0): + - BoringSSL (~> 10.0) + - gRPC-Core/Interface (= 1.14.0) - nanopb (~> 0.3) - - gRPC-Core/Interface (1.17.0-pre1) - - GTMOAuth2 (1.1.6): - - GTMSessionFetcher (~> 1.1) - - GTMSessionFetcher (1.2.1): - - GTMSessionFetcher/Full (= 1.2.1) + - gRPC-Core/Interface (1.14.0) - GTMSessionFetcher/Core (1.2.1) - - GTMSessionFetcher/Full (1.2.1): - - GTMSessionFetcher/Core (= 1.2.1) - leveldb-library (1.20) - nanopb (0.3.901): - nanopb/decode (= 0.3.901) @@ -140,9 +134,9 @@ PODS: - nanopb/decode (0.3.901) - nanopb/encode (0.3.901) - Protobuf (3.6.1) - - SDWebImage (4.4.2): - - SDWebImage/Core (= 4.4.2) - - SDWebImage/Core (4.4.2) + - SDWebImage (4.4.3): + - SDWebImage/Core (= 4.4.3) + - SDWebImage/Core (4.4.3) - TwitterCore (3.2.0) - TwitterKit (3.4.2): - TwitterCore (>= 3.2.0) @@ -153,7 +147,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/cocoapods/specs.git: - Bolts - - BoringSSL-GRPC + - BoringSSL - FBSDKCoreKit - FBSDKLoginKit - Firebase @@ -168,7 +162,6 @@ SPEC REPOS: - GoogleUtilities - "gRPC-C++" - gRPC-Core - - GTMOAuth2 - GTMSessionFetcher - leveldb-library - nanopb @@ -183,31 +176,30 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Bolts: ac6567323eac61e203f6a9763667d0f711be34c8 - BoringSSL-GRPC: 2a230d9cd93e7ce39916044f645cebb31f37dde6 - FBSDKCoreKit: 8d47857400e2f5bdea697a80daff882e91c84ef6 - FBSDKLoginKit: 4621c690d9dd8628031a4791497062183ea34b0d - Firebase: 6df9a6114bc9f106a98fe83d5438d4d9833c2019 - FirebaseAuth: 9299ab178271bec7426967b05b2718bb6fc31f17 + BoringSSL: e10f92a27043805c01071fe815a5cd98ae8212e7 + FBSDKCoreKit: f442aa96179cc9b382bb4abeb7e340a47cca8f91 + FBSDKLoginKit: c3079d9a4db27c492287b1eed7a4272b28cf8a59 + Firebase: 8bb9268bff82374f2cbaaabb143e725743c316ae + FirebaseAuth: 02e969ff430e156d99d4cb842d77b806b71ad7bb FirebaseAuthInterop: 0ffa57668be100582bb7643d4fcb7615496c41fc - FirebaseCore: fba2bfaa691c49028309b92e4dd37cc4b5512fbe - FirebaseDatabase: e2bcbc106adc4b11a2da3ec2eb63c0c4a44f2f54 - FirebaseFirestore: 9e9411f13a0aba72d4f631899611d09e43734c48 + FirebaseCore: 35747502d9e8c6ee217385ad04446c7c2aaf9c5c + FirebaseDatabase: 0621689f77528d62b47e1c06ca737c4c19275d1a + FirebaseFirestore: 58043a1c2d2c91efdaa8d8f385cdbaa2ce750cfe FirebaseStorage: 3d22c041370593e639fba013d1eb698a8dae2881 - FirebaseUI: 4047ce0093bd304647676cea71c26350158d4b60 - GoogleSignIn: 11183592dc63e105475c7305a325045ff95e02b7 - GoogleToolboxForMac: 91c824d21e85b31c2aae9bb011c5027c9b4e738f + FirebaseUI: 810a4d85e15dfed08bfc6fc01358f2c64a8b341c + GoogleSignIn: 7ff245e1a7b26d379099d3243a562f5747e23d39 + GoogleToolboxForMac: ff31605b7d66400dcec09bed5861689aebadda4d GoogleUtilities: 95996bea7c7d9b8fb811b7507669a4a8762f80c7 - "gRPC-C++": d4f661e0354347788b4aabc95a3dd3173a935338 - gRPC-Core: 5906a06d5938ed2dec946f0c903c70897f04c2e2 - GTMOAuth2: c77fe325e4acd453837e72d91e3b5f13116857b2 + "gRPC-C++": 19eec1ffd34de29453f5fab5b4697ad0f240ad51 + gRPC-Core: f4836515817c0eb479aeeb9cc27c91c4ba62a9f6 GTMSessionFetcher: 32aeca0aa144acea523e1c8e053089dec2cb98ca leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5 nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48 Protobuf: 1eb9700044745f00181c136ef21b8ff3ad5a0fd5 - SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681 + SDWebImage: c5594f1a19c48d526d321e548902b56b479cd508 TwitterCore: 8cbc9ad34d91c63a0035ea05bfbfc0d7ca72a28c TwitterKit: 5e4f41d70b9abdb41df5467f52d7aa2c0fd26ebb -PODFILE CHECKSUM: 06a6f3dd26f114385242f5d4704f5d6e00103a7c +PODFILE CHECKSUM: 7620a9e0cd7d23f06f4301fc5908d3c6f6c7b72d COCOAPODS: 1.5.3